prismify-ui 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/CODE_OF_CONDUCT.md +79 -0
- package/LICENSE +21 -0
- package/README.md +38 -0
- package/dist/components/dashboard/PfDashboardGroup/index.vue.d.ts +42 -0
- package/dist/components/dashboard/PfDashboardNavbar/index.vue.d.ts +57 -0
- package/dist/components/dashboard/PfDashboardPanel/index.vue.d.ts +47 -0
- package/dist/components/dashboard/PfDashboardResizeHandle/index.vue.d.ts +28 -0
- package/dist/components/dashboard/PfDashboardSearch/index.vue.d.ts +99 -0
- package/dist/components/dashboard/PfDashboardSearchButton/index.vue.d.ts +71 -0
- package/dist/components/dashboard/PfDashboardSidebar/index.vue.d.ts +121 -0
- package/dist/components/dashboard/PfDashboardSidebarCollapse/index.vue.d.ts +65 -0
- package/dist/components/dashboard/PfDashboardSidebarToggle/index.vue.d.ts +65 -0
- package/dist/components/dashboard/PfDashboardToolbar/index.vue.d.ts +32 -0
- package/dist/components/dashboard/shared/injection.d.ts +30 -0
- package/dist/components/dashboard/shared/resize.d.ts +5 -0
- package/dist/components/dashboard/shared/storage.d.ts +10 -0
- package/dist/components/data/PfAccordion/index.vue.d.ts +167 -0
- package/dist/components/data/PfEmpty/index.vue.d.ts +83 -0
- package/dist/components/data/PfMarquee/index.vue.d.ts +97 -0
- package/dist/components/data/PfScrollArea/index.vue.d.ts +58 -0
- package/dist/components/data/PfTable/index.vue.d.ts +166 -0
- package/dist/components/data/PfTimeline/index.vue.d.ts +105 -0
- package/dist/components/data/PfTree/PfTreeBranch.vue.d.ts +78 -0
- package/dist/components/data/PfTree/PfTreeRow.vue.d.ts +107 -0
- package/dist/components/data/PfTree/index.vue.d.ts +222 -0
- package/dist/components/data/PfTree/treeContext.d.ts +19 -0
- package/dist/components/data/PfTree/treeItemDisplay.d.ts +5 -0
- package/dist/components/data/PfTree/treeTypes.d.ts +58 -0
- package/dist/components/data/PfUser/index.vue.d.ts +65 -0
- package/dist/components/editor/PfEditor/PfEditorImageUploadNode.vue.d.ts +3 -0
- package/dist/components/editor/PfEditor/imageUploadExtension.d.ts +10 -0
- package/dist/components/editor/PfEditor/index.vue.d.ts +47 -0
- package/dist/components/editor/PfEditorDragHandle/index.vue.d.ts +95 -0
- package/dist/components/editor/PfEditorEmojiMenu/index.vue.d.ts +43 -0
- package/dist/components/editor/PfEditorMentionMenu/index.vue.d.ts +53 -0
- package/dist/components/editor/PfEditorSuggestionMenu/index.vue.d.ts +49 -0
- package/dist/components/editor/PfEditorToolbar/index.vue.d.ts +67 -0
- package/dist/components/editor/utils/handlers.d.ts +7 -0
- package/dist/components/editor/utils/injection.d.ts +8 -0
- package/dist/components/editor/utils/mapEditorItems.d.ts +7 -0
- package/dist/components/editor/utils/types.d.ts +98 -0
- package/dist/components/editor/utils/useEditorMenu.d.ts +31 -0
- package/dist/components/element/PfAlert/index.vue.d.ts +98 -0
- package/dist/components/element/PfAvatar/index.vue.d.ts +43 -0
- package/dist/components/element/PfAvatarGroup/index.vue.d.ts +52 -0
- package/dist/components/element/PfAvatarGroup/injection.d.ts +6 -0
- package/dist/components/element/PfBadge/index.vue.d.ts +64 -0
- package/dist/components/element/PfBanner/index.vue.d.ts +67 -0
- package/dist/components/element/PfButton/index.vue.d.ts +108 -0
- package/dist/components/element/PfCard/index.vue.d.ts +34 -0
- package/dist/components/element/PfChip/index.vue.d.ts +49 -0
- package/dist/components/element/PfCollapsible/index.vue.d.ts +82 -0
- package/dist/components/element/PfContentSearchButton/index.vue.d.ts +75 -0
- package/dist/components/element/PfFieldGroup/index.vue.d.ts +48 -0
- package/dist/components/element/PfFieldGroup/injection.d.ts +6 -0
- package/dist/components/element/PfIcon/iconSizes.d.ts +3 -0
- package/dist/components/element/PfIcon/index.vue.d.ts +10 -0
- package/dist/components/element/PfIcon/paths.d.ts +14 -0
- package/dist/components/element/PfKbd/index.vue.d.ts +36 -0
- package/dist/components/element/PfProgress/index.vue.d.ts +69 -0
- package/dist/components/element/PfSeparator/index.vue.d.ts +58 -0
- package/dist/components/element/PfSkeleton/index.vue.d.ts +31 -0
- package/dist/components/form/PfCalendar/calendarGrid.d.ts +12 -0
- package/dist/components/form/PfCalendar/calendarSelection.d.ts +30 -0
- package/dist/components/form/PfCalendar/index.vue.d.ts +137 -0
- package/dist/components/form/PfCheckbox/index.vue.d.ts +84 -0
- package/dist/components/form/PfCheckboxGroup/index.vue.d.ts +82 -0
- package/dist/components/form/PfColorPicker/colorPicker.d.ts +46 -0
- package/dist/components/form/PfColorPicker/index.vue.d.ts +54 -0
- package/dist/components/form/PfFileUpload/index.vue.d.ts +258 -0
- package/dist/components/form/PfForm/index.vue.d.ts +75 -0
- package/dist/components/form/PfForm/injection.d.ts +32 -0
- package/dist/components/form/PfForm/validation.d.ts +9 -0
- package/dist/components/form/PfFormField/index.vue.d.ts +59 -0
- package/dist/components/form/PfInput/index.vue.d.ts +97 -0
- package/dist/components/form/PfInputDate/index.vue.d.ts +109 -0
- package/dist/components/form/PfInputDate/inputDateSegments.d.ts +36 -0
- package/dist/components/form/PfInputMenu/index.vue.d.ts +1410 -0
- package/dist/components/form/PfInputNumber/index.vue.d.ts +498 -0
- package/dist/components/form/PfInputTags/index.vue.d.ts +482 -0
- package/dist/components/form/PfInputTime/index.vue.d.ts +108 -0
- package/dist/components/form/PfInputTime/inputTimeSegments.d.ts +36 -0
- package/dist/components/form/PfPinInput/index.vue.d.ts +56 -0
- package/dist/components/form/PfRadio/index.vue.d.ts +76 -0
- package/dist/components/form/PfRadioGroup/index.vue.d.ts +74 -0
- package/dist/components/form/PfSelect/index.vue.d.ts +209 -0
- package/dist/components/form/PfSelectMenu/index.vue.d.ts +1034 -0
- package/dist/components/form/PfSlider/index.vue.d.ts +54 -0
- package/dist/components/form/PfSwitch/index.vue.d.ts +83 -0
- package/dist/components/form/PfTextarea/index.vue.d.ts +111 -0
- package/dist/components/form/groupItems.d.ts +36 -0
- package/dist/components/layout/PfApp/index.vue.d.ts +45 -0
- package/dist/components/layout/PfApp/injection.d.ts +43 -0
- package/dist/components/layout/PfContainer/index.vue.d.ts +27 -0
- package/dist/components/layout/PfError/index.vue.d.ts +113 -0
- package/dist/components/layout/PfFooter/index.vue.d.ts +38 -0
- package/dist/components/layout/PfHeader/index.vue.d.ts +132 -0
- package/dist/components/layout/PfMain/index.vue.d.ts +27 -0
- package/dist/components/navigation/PfBreadcrumb/index.vue.d.ts +156 -0
- package/dist/components/navigation/PfContentNavigation/index.vue.d.ts +196 -0
- package/dist/components/navigation/PfContentSurround/index.vue.d.ts +86 -0
- package/dist/components/navigation/PfContentToc/index.vue.d.ts +165 -0
- package/dist/components/navigation/PfFooterColumns/index.vue.d.ts +145 -0
- package/dist/components/navigation/PfLink/index.vue.d.ts +80 -0
- package/dist/components/navigation/PfNavigationMenu/index.vue.d.ts +187 -0
- package/dist/components/navigation/PfPagination/index.vue.d.ts +103 -0
- package/dist/components/navigation/PfStepper/index.vue.d.ts +107 -0
- package/dist/components/navigation/PfTabs/index.vue.d.ts +131 -0
- package/dist/components/overlay/PfContentSearch/index.vue.d.ts +181 -0
- package/dist/components/overlay/PfContextMenu/PfContextMenuItems.vue.d.ts +10 -0
- package/dist/components/overlay/PfContextMenu/index.vue.d.ts +57 -0
- package/dist/components/overlay/PfContextMenu/types.d.ts +40 -0
- package/dist/components/overlay/PfDrawer/index.vue.d.ts +106 -0
- package/dist/components/overlay/PfDropdownMenu/PfDropdownMenuItems.vue.d.ts +10 -0
- package/dist/components/overlay/PfDropdownMenu/index.vue.d.ts +74 -0
- package/dist/components/overlay/PfDropdownMenu/types.d.ts +58 -0
- package/dist/components/overlay/PfModal/index.vue.d.ts +138 -0
- package/dist/components/overlay/PfToast/index.vue.d.ts +128 -0
- package/dist/components/overlay/PfToaster/index.vue.d.ts +11 -0
- package/dist/components/overlay/PfTooltip/index.vue.d.ts +85 -0
- package/dist/composables/pfScrollAreaVirtual.d.ts +21 -0
- package/dist/composables/usePfApp.d.ts +7 -0
- package/dist/composables/usePfContentSearch.d.ts +11 -0
- package/dist/composables/usePfKbd.d.ts +14 -0
- package/dist/composables/usePfToast.d.ts +137 -0
- package/dist/composables/usePfVModelBound.d.ts +5 -0
- package/dist/index.d.ts +184 -0
- package/dist/prismify-ui.cjs +3 -0
- package/dist/prismify-ui.cjs.map +1 -0
- package/dist/prismify-ui.js +26967 -0
- package/dist/prismify-ui.js.map +1 -0
- package/dist/style.css +1 -0
- package/dist/utils/editor.d.ts +2 -0
- package/dist/utils/pfLinkQuery.d.ts +8 -0
- package/docs/README.md +17 -0
- package/docs/installation.md +120 -0
- package/docs/library-development.md +57 -0
- package/docs/theming.md +334 -0
- package/llms.txt +220 -0
- package/package.json +146 -0
- package/src/styles/_variables.scss +25 -0
- package/src/styles/index.scss +1 -0
- package/src/styles/mixins/_input-tag-pill.scss +72 -0
- package/src/styles/variables/_accordion.scss +15 -0
- package/src/styles/variables/_animation.scss +25 -0
- package/src/styles/variables/_breadcrumb.scss +11 -0
- package/src/styles/variables/_colors.scss +37 -0
- package/src/styles/variables/_contextMenu.scss +31 -0
- package/src/styles/variables/_dashboard.scss +8 -0
- package/src/styles/variables/_drawer.scss +34 -0
- package/src/styles/variables/_editor.scss +34 -0
- package/src/styles/variables/_effects.scss +6 -0
- package/src/styles/variables/_empty.scss +12 -0
- package/src/styles/variables/_fileUpload.scss +21 -0
- package/src/styles/variables/_footerColumns.scss +17 -0
- package/src/styles/variables/_layout.scss +294 -0
- package/src/styles/variables/_link.scss +8 -0
- package/src/styles/variables/_marquee.scss +6 -0
- package/src/styles/variables/_modal.scss +26 -0
- package/src/styles/variables/_navigationMenu.scss +46 -0
- package/src/styles/variables/_stepper.scss +15 -0
- package/src/styles/variables/_table.scss +29 -0
- package/src/styles/variables/_tabs.scss +18 -0
- package/src/styles/variables/_timeline.scss +11 -0
- package/src/styles/variables/_toast.scss +14 -0
- package/src/styles/variables/_tooltip.scss +16 -0
- package/src/styles/variables/_tree.scss +29 -0
- package/src/styles/variables/_typography.scss +19 -0
package/llms.txt
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
# prismify-ui
|
|
2
|
+
|
|
3
|
+
> Vue 3 UI component library for admin interfaces: **SCSS-only** styles in SFCs, design tokens as **`--pf-*`** CSS variables on `:root`, **no Tailwind** in the library. Works with **plain Vue 3** and **Nuxt 4**. MIT. Published as **`prismify-ui`** on npm. **No Reka UI** — components are custom-built.
|
|
4
|
+
|
|
5
|
+
**Repository:** https://github.com/koirodev/prismify-ui
|
|
6
|
+
|
|
7
|
+
**Raw docs base (default branch `main`):** `https://raw.githubusercontent.com/koirodev/prismify-ui/main/`
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Installation (Vue & Nuxt)
|
|
12
|
+
|
|
13
|
+
- [Installation and usage](https://raw.githubusercontent.com/koirodev/prismify-ui/main/docs/installation.md): Install from npm, peer dependencies, **`prismifyPlugin`**, import **`prismify-ui/style.css`**, **`PfApp`** shell, tree-shaking imports, Nuxt 4 **`css`** + plugin setup.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Getting started
|
|
18
|
+
|
|
19
|
+
- [README](https://raw.githubusercontent.com/koirodev/prismify-ui/main/README.md): Package overview, peer summary, documentation links.
|
|
20
|
+
- [Documentation index](https://raw.githubusercontent.com/koirodev/prismify-ui/main/docs/README.md): Entry point for **`docs/`**.
|
|
21
|
+
- [Theming and design tokens](https://raw.githubusercontent.com/koirodev/prismify-ui/main/docs/theming.md): Overriding **`--pf-*`**, color/typography/layout tables, **`PfHeader`** / **`PfMain`**, input/switch/slider/select tokens, animation, SCSS entry **`prismify-ui/styles`**.
|
|
22
|
+
- [Library development](https://raw.githubusercontent.com/koirodev/prismify-ui/main/docs/library-development.md): Storybook categories, build, tests, icons pipeline, semver and alpha releases.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Conventions (for contributors and AI)
|
|
27
|
+
|
|
28
|
+
- **Component prefix:** **`Pf*`** (e.g. **`PfButton`**). Register globally via **`app.use(prismifyPlugin)`** or named imports from **`prismify-ui`**.
|
|
29
|
+
- **Styles:** Single-file components use **`lang="scss"`** only; do not add Tailwind or other CSS frameworks inside library components.
|
|
30
|
+
- **Theming:** Use **`var(--pf-*)`**; token sources live in **`src/styles/variables/*`**, aggregated in **`src/styles/_variables.scss`**. Do not use **`$pf-*`** SCSS variables for consumer theming.
|
|
31
|
+
- **BEM (scoped):** Block name = camelCase without **`Pf`** (**`PfButton`** → **`pfButton`**). Pattern **`block__element_modifier`** (one **`_`** before a modifier).
|
|
32
|
+
- **Icons:** **`PfIcon`** — **`name`** ∈ **`PfIconName`** / **`PF_ICON_NAMES`** (glyphs from **`src/icons/svg/`**); **`size`** ∈ **`PfIconSize`** / **`PF_ICON_SIZES`** / **`--pf-icon-size-*`**.
|
|
33
|
+
- **Storybook:** Stories as **`*.stories.ts`**, title **`'<Category>/<PfComponent>'`** (see **`docs/library-development.md`**).
|
|
34
|
+
- **Build:** Library **`vite.lib.config.ts`**; peers listed in **`rollupOptions.external`** (Vue, vue-router, `@internationalized/*`, `@tanstack/vue-table`, TipTap is bundled as configured — verify **`package.json`**).
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Components (source folders on GitHub)
|
|
39
|
+
|
|
40
|
+
Each line links to the component folder (**`tree/main/...`**). Implementation details are in **`index.vue`** inside that folder. Storybook: **`npm run storybook`** in the repo.
|
|
41
|
+
|
|
42
|
+
### Element
|
|
43
|
+
|
|
44
|
+
- [PfAlert](https://github.com/koirodev/prismify-ui/tree/main/src/components/element/PfAlert): Inline or block alert with optional avatar, actions, and dismiss.
|
|
45
|
+
- [PfAvatar](https://github.com/koirodev/prismify-ui/tree/main/src/components/element/PfAvatar): Circular avatar with image, fallback, and size variants.
|
|
46
|
+
- [PfAvatarGroup](https://github.com/koirodev/prismify-ui/tree/main/src/components/element/PfAvatarGroup): Stacked overlapping avatars with overflow indicator.
|
|
47
|
+
- [PfBadge](https://github.com/koirodev/prismify-ui/tree/main/src/components/element/PfBadge): Small status or count badge on inline content.
|
|
48
|
+
- [PfBanner](https://github.com/koirodev/prismify-ui/tree/main/src/components/element/PfBanner): Dismissible top-of-page or section banner.
|
|
49
|
+
- [PfButton](https://github.com/koirodev/prismify-ui/tree/main/src/components/element/PfButton): Primary UI button with variants, sizes, icons, loading.
|
|
50
|
+
- [PfCard](https://github.com/koirodev/prismify-ui/tree/main/src/components/element/PfCard): Card container with slots for header, body, footer.
|
|
51
|
+
- [PfChip](https://github.com/koirodev/prismify-ui/tree/main/src/components/element/PfChip): Compact chip or pill for tags and filters.
|
|
52
|
+
- [PfCollapsible](https://github.com/koirodev/prismify-ui/tree/main/src/components/element/PfCollapsible): Expand/collapse region with trigger.
|
|
53
|
+
- [PfContentSearchButton](https://github.com/koirodev/prismify-ui/tree/main/src/components/element/PfContentSearchButton): Button styled to open documentation-style content search.
|
|
54
|
+
- [PfFieldGroup](https://github.com/koirodev/prismify-ui/tree/main/src/components/element/PfFieldGroup): Groups button-like or field-adjacent controls in a row.
|
|
55
|
+
- [PfIcon](https://github.com/koirodev/prismify-ui/tree/main/src/components/element/PfIcon): Inline SVG icons from the built-in glyph set.
|
|
56
|
+
- [PfKbd](https://github.com/koirodev/prismify-ui/tree/main/src/components/element/PfKbd): Keyboard shortcut display using **`usePfKbd`** / **`PF_KBD_GLYPHS`**.
|
|
57
|
+
- [PfProgress](https://github.com/koirodev/prismify-ui/tree/main/src/components/element/PfProgress): Horizontal or vertical progress indicator.
|
|
58
|
+
- [PfSeparator](https://github.com/koirodev/prismify-ui/tree/main/src/components/element/PfSeparator): Visual divider between regions.
|
|
59
|
+
- [PfSkeleton](https://github.com/koirodev/prismify-ui/tree/main/src/components/element/PfSkeleton): Loading placeholder blocks.
|
|
60
|
+
|
|
61
|
+
### Form
|
|
62
|
+
|
|
63
|
+
- [PfCalendar](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfCalendar): Calendar grid for date/range selection (**peer:** `@internationalized/date`). Locale from **`PfApp`** if not set.
|
|
64
|
+
- [PfCheckbox](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfCheckbox): Single checkbox with optional card variant.
|
|
65
|
+
- [PfCheckboxGroup](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfCheckboxGroup): Group of related checkboxes.
|
|
66
|
+
- [PfColorPicker](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfColorPicker): Color selection UI.
|
|
67
|
+
- [PfFileUpload](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfFileUpload): File dropzone and file list with remove.
|
|
68
|
+
- [PfForm](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfForm): Form wrapper with submit/validate integration.
|
|
69
|
+
- [PfFormField](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfFormField): Label, hint, and error layout for inputs.
|
|
70
|
+
- [PfInput](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfInput): Text input with overlay styling and optional **`animatedText`** character animation (**`--pf-input-char-*`**).
|
|
71
|
+
- [PfTextarea](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfTextarea): Multiline input with similar overlay/animation patterns as **`PfInput`**.
|
|
72
|
+
- [PfInputDate](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfInputDate): Date field combining input and calendar UX.
|
|
73
|
+
- [PfInputTime](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfInputTime): Time selection input.
|
|
74
|
+
- [PfInputNumber](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfInputNumber): Numeric input with steppers (**peer:** `@internationalized/number`).
|
|
75
|
+
- [PfInputMenu](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfInputMenu): Autocomplete-style input with suggestion list.
|
|
76
|
+
- [PfInputTags](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfInputTags): Token/tag input field.
|
|
77
|
+
- [PfPinInput](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfPinInput): OTP-style multi-cell input.
|
|
78
|
+
- [PfRadio](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfRadio): Single radio control with card variant support.
|
|
79
|
+
- [PfRadioGroup](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfRadioGroup): Radio group for one-of-many choice.
|
|
80
|
+
- [PfSelect](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfSelect): Custom select with Teleport panel, native/options/multiple modes, **`usePfVModelBound`** pattern.
|
|
81
|
+
- [PfSelectMenu](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfSelectMenu): Searchable list select for rich options.
|
|
82
|
+
- [PfSlider](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfSlider): Range slider with optional built-in tooltip (**`--pf-slider-*`**).
|
|
83
|
+
- [PfSwitch](https://github.com/koirodev/prismify-ui/tree/main/src/components/form/PfSwitch): Toggle switch (**`--pf-switch-*`**).
|
|
84
|
+
|
|
85
|
+
### Layout
|
|
86
|
+
|
|
87
|
+
- [PfApp](https://github.com/koirodev/prismify-ui/tree/main/src/components/layout/PfApp): Root app provider: **`locale`**, **`dir`**, portal targets, toaster, tooltip provider; **`PfCalendar`** reads locale from here.
|
|
88
|
+
- [PfContainer](https://github.com/koirodev/prismify-ui/tree/main/src/components/layout/PfContainer): Max-width content container with responsive padding.
|
|
89
|
+
- [PfHeader](https://github.com/koirodev/prismify-ui/tree/main/src/components/layout/PfHeader): App header; height tied to **`--pf-header-height`** for **`PfMain`** / **`PfError`** layout.
|
|
90
|
+
- [PfMain](https://github.com/koirodev/prismify-ui/tree/main/src/components/layout/PfMain): Main content area filling viewport below header.
|
|
91
|
+
- [PfFooter](https://github.com/koirodev/prismify-ui/tree/main/src/components/layout/PfFooter): Page footer with slots for sections.
|
|
92
|
+
- [PfError](https://github.com/koirodev/prismify-ui/tree/main/src/components/layout/PfError): Centered error page layout.
|
|
93
|
+
|
|
94
|
+
### Data
|
|
95
|
+
|
|
96
|
+
- [PfAccordion](https://github.com/koirodev/prismify-ui/tree/main/src/components/data/PfAccordion): Expandable sections list.
|
|
97
|
+
- [PfEmpty](https://github.com/koirodev/prismify-ui/tree/main/src/components/data/PfEmpty): Empty state with icon, title, and actions.
|
|
98
|
+
- [PfScrollArea](https://github.com/koirodev/prismify-ui/tree/main/src/components/data/PfScrollArea): Custom-styled scroll container.
|
|
99
|
+
- [PfTable](https://github.com/koirodev/prismify-ui/tree/main/src/components/data/PfTable): Data table built on **TanStack Table** (**peer:** `@tanstack/vue-table`).
|
|
100
|
+
- [PfTimeline](https://github.com/koirodev/prismify-ui/tree/main/src/components/data/PfTimeline): Vertical timeline of events.
|
|
101
|
+
- [PfMarquee](https://github.com/koirodev/prismify-ui/tree/main/src/components/data/PfMarquee): Horizontal infinite marquee for logos or text.
|
|
102
|
+
- [PfTree](https://github.com/koirodev/prismify-ui/tree/main/src/components/data/PfTree): Hierarchical tree with expand/select.
|
|
103
|
+
- [PfUser](https://github.com/koirodev/prismify-ui/tree/main/src/components/data/PfUser): User row with avatar, name, and meta.
|
|
104
|
+
|
|
105
|
+
### Navigation
|
|
106
|
+
|
|
107
|
+
- [PfBreadcrumb](https://github.com/koirodev/prismify-ui/tree/main/src/components/navigation/PfBreadcrumb): Hierarchy breadcrumb trail.
|
|
108
|
+
- [PfLink](https://github.com/koirodev/prismify-ui/tree/main/src/components/navigation/PfLink): Router-aware link (**peer:** `vue-router`).
|
|
109
|
+
- [PfNavigationMenu](https://github.com/koirodev/prismify-ui/tree/main/src/components/navigation/PfNavigationMenu): Horizontal or vertical nav menu.
|
|
110
|
+
- [PfPagination](https://github.com/koirodev/prismify-ui/tree/main/src/components/navigation/PfPagination): Page controls for lists/tables.
|
|
111
|
+
- [PfStepper](https://github.com/koirodev/prismify-ui/tree/main/src/components/navigation/PfStepper): Multi-step wizard indicator.
|
|
112
|
+
- [PfTabs](https://github.com/koirodev/prismify-ui/tree/main/src/components/navigation/PfTabs): Tab list and panels.
|
|
113
|
+
- [PfContentNavigation](https://github.com/koirodev/prismify-ui/tree/main/src/components/navigation/PfContentNavigation): Docs-style sidebar navigation.
|
|
114
|
+
- [PfContentSurround](https://github.com/koirodev/prismify-ui/tree/main/src/components/navigation/PfContentSurround): Prev/next links for content pages.
|
|
115
|
+
- [PfContentToc](https://github.com/koirodev/prismify-ui/tree/main/src/components/navigation/PfContentToc): Table of contents with active heading.
|
|
116
|
+
- [PfFooterColumns](https://github.com/koirodev/prismify-ui/tree/main/src/components/navigation/PfFooterColumns): Multi-column link grid for footers.
|
|
117
|
+
|
|
118
|
+
### Overlay
|
|
119
|
+
|
|
120
|
+
- [PfTooltip](https://github.com/koirodev/prismify-ui/tree/main/src/components/overlay/PfTooltip): Hover/focus tooltip (integrates with **`PfApp`** provider).
|
|
121
|
+
- [PfModal](https://github.com/koirodev/prismify-ui/tree/main/src/components/overlay/PfModal): Modal dialog with focus trap patterns.
|
|
122
|
+
- [PfDrawer](https://github.com/koirodev/prismify-ui/tree/main/src/components/overlay/PfDrawer): Slide-in panel from screen edge.
|
|
123
|
+
- [PfDropdownMenu](https://github.com/koirodev/prismify-ui/tree/main/src/components/overlay/PfDropdownMenu): Dropdown actions menu from a trigger.
|
|
124
|
+
- [PfContextMenu](https://github.com/koirodev/prismify-ui/tree/main/src/components/overlay/PfContextMenu): Right-click context menu.
|
|
125
|
+
- [PfContentSearch](https://github.com/koirodev/prismify-ui/tree/main/src/components/overlay/PfContentSearch): Command-palette-style documentation search overlay.
|
|
126
|
+
- [PfToast](https://github.com/koirodev/prismify-ui/tree/main/src/components/overlay/PfToast): Single toast surface.
|
|
127
|
+
- [PfToaster](https://github.com/koirodev/prismify-ui/tree/main/src/components/overlay/PfToaster): Toast host; use with **`usePfToast`**.
|
|
128
|
+
|
|
129
|
+
### Editor (TipTap)
|
|
130
|
+
|
|
131
|
+
- [PfEditor](https://github.com/koirodev/prismify-ui/tree/main/src/components/editor/PfEditor): Rich text editor (**peer:** `@tiptap/*` stack as in **`package.json`**).
|
|
132
|
+
- [PfEditorToolbar](https://github.com/koirodev/prismify-ui/tree/main/src/components/editor/PfEditorToolbar): Configurable editor toolbar.
|
|
133
|
+
- [PfEditorSuggestionMenu](https://github.com/koirodev/prismify-ui/tree/main/src/components/editor/PfEditorSuggestionMenu): Slash/command suggestion menu.
|
|
134
|
+
- [PfEditorMentionMenu](https://github.com/koirodev/prismify-ui/tree/main/src/components/editor/PfEditorMentionMenu): `@` mention suggestions.
|
|
135
|
+
- [PfEditorEmojiMenu](https://github.com/koirodev/prismify-ui/tree/main/src/components/editor/PfEditorEmojiMenu): Emoji picker for the editor.
|
|
136
|
+
- [PfEditorDragHandle](https://github.com/koirodev/prismify-ui/tree/main/src/components/editor/PfEditorDragHandle): Block drag handle (**requires** `@tiptap/extension-node-range` among peers).
|
|
137
|
+
|
|
138
|
+
### Dashboard
|
|
139
|
+
|
|
140
|
+
- [PfDashboardGroup](https://github.com/koirodev/prismify-ui/tree/main/src/components/dashboard/PfDashboardGroup): Dashboard layout root with sidebar state.
|
|
141
|
+
- [PfDashboardNavbar](https://github.com/koirodev/prismify-ui/tree/main/src/components/dashboard/PfDashboardNavbar): Top bar for dashboard shell.
|
|
142
|
+
- [PfDashboardSidebar](https://github.com/koirodev/prismify-ui/tree/main/src/components/dashboard/PfDashboardSidebar): Collapsible/resizable sidebar.
|
|
143
|
+
- [PfDashboardSidebarCollapse](https://github.com/koirodev/prismify-ui/tree/main/src/components/dashboard/PfDashboardSidebarCollapse): Collapse control for desktop sidebar.
|
|
144
|
+
- [PfDashboardSidebarToggle](https://github.com/koirodev/prismify-ui/tree/main/src/components/dashboard/PfDashboardSidebarToggle): Mobile sidebar toggle.
|
|
145
|
+
- [PfDashboardPanel](https://github.com/koirodev/prismify-ui/tree/main/src/components/dashboard/PfDashboardPanel): Main dashboard content panel.
|
|
146
|
+
- [PfDashboardResizeHandle](https://github.com/koirodev/prismify-ui/tree/main/src/components/dashboard/PfDashboardResizeHandle): Drag handle for panel/sidebar width.
|
|
147
|
+
- [PfDashboardToolbar](https://github.com/koirodev/prismify-ui/tree/main/src/components/dashboard/PfDashboardToolbar): Toolbar below navbar in dashboard layout.
|
|
148
|
+
- [PfDashboardSearch](https://github.com/koirodev/prismify-ui/tree/main/src/components/dashboard/PfDashboardSearch): Dashboard-scoped command/search palette.
|
|
149
|
+
- [PfDashboardSearchButton](https://github.com/koirodev/prismify-ui/tree/main/src/components/dashboard/PfDashboardSearchButton): Button to open **`PfDashboardSearch`**.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Composables, helpers, and types (exported)
|
|
154
|
+
|
|
155
|
+
| Export | Role | Source (raw) |
|
|
156
|
+
| --- | --- | --- |
|
|
157
|
+
| **`usePfApp`** | Read context from nearest **`PfApp`** (locale, dir, portals, toaster, tooltips). | [usePfApp.ts](https://raw.githubusercontent.com/koirodev/prismify-ui/main/src/composables/usePfApp.ts) |
|
|
158
|
+
| **`usePfToast`** | Imperative toast queue for **`PfToaster`**. | [usePfToast.ts](https://raw.githubusercontent.com/koirodev/prismify-ui/main/src/composables/usePfToast.ts) |
|
|
159
|
+
| **`usePfContentSearch`** | Shared state for **`PfContentSearch`**. | [usePfContentSearch.ts](https://raw.githubusercontent.com/koirodev/prismify-ui/main/src/composables/usePfContentSearch.ts) |
|
|
160
|
+
| **`usePfKbd`**, **`getPfKbdKey`**, **`PF_KBD_GLYPHS`** | Keyboard glyphs for **`PfKbd`**. | [usePfKbd.ts](https://raw.githubusercontent.com/koirodev/prismify-ui/main/src/composables/usePfKbd.ts) |
|
|
161
|
+
| **`mapEditorItems`**, **`mapEditorItem`** | Map toolbar/menu config for **`PfEditor`**. | [editor.ts](https://raw.githubusercontent.com/koirodev/prismify-ui/main/src/utils/editor.ts) |
|
|
162
|
+
| **`PfEditorImageUpload`** | TipTap extension export for image upload flow. | [imageUploadExtension.ts](https://raw.githubusercontent.com/koirodev/prismify-ui/main/src/components/editor/PfEditor/imageUploadExtension.ts) |
|
|
163
|
+
| **`PF_APP_INJECTION_KEY`**, **`resolvePfAppPortalTarget`** | Advanced **`PfApp`** integration. | [injection.ts](https://raw.githubusercontent.com/koirodev/prismify-ui/main/src/components/layout/PfApp/injection.ts) |
|
|
164
|
+
| **`PF_ICON_NAMES`**, **`PF_ICON_SIZES`** | Icon name and size constants. | **`src/components/element/PfIcon/paths.ts`**, **`iconSizes.ts`** |
|
|
165
|
+
|
|
166
|
+
Full export list and TypeScript types: **[src/index.ts](https://raw.githubusercontent.com/koirodev/prismify-ui/main/src/index.ts)**.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Package entrypoints
|
|
171
|
+
|
|
172
|
+
- **`prismify-ui`** — components, plugin (**`prismifyPlugin`**), composables, types.
|
|
173
|
+
- **`prismify-ui/style.css`** — required global CSS: tokens + component styles.
|
|
174
|
+
- **`prismify-ui/styles`** — SCSS entry for token pipeline (see **`docs/theming.md`**).
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Full token reference (attach separately)
|
|
179
|
+
|
|
180
|
+
This file does not inline every **`--pf-*`** value. For complete tables, attach **[docs/theming.md](https://raw.githubusercontent.com/koirodev/prismify-ui/main/docs/theming.md)** (raw) or the same path in a local clone.
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Source map (for contributors and AI edits)
|
|
185
|
+
|
|
186
|
+
| Topic | Where |
|
|
187
|
+
| --- | --- |
|
|
188
|
+
| Public API & plugin | `src/index.ts` |
|
|
189
|
+
| Global styles & tokens | `src/styles/index.scss`, `src/styles/_variables.scss`, `src/styles/variables/` |
|
|
190
|
+
| A component | `src/components/<category>/PfName/index.vue` (BEM + `var(--pf-*)`) |
|
|
191
|
+
| Icons glyph list | `src/components/element/PfIcon/paths.ts` (generated from `src/icons/svg/` via `npm run icons:build`) |
|
|
192
|
+
| Storybook | `.storybook/preview.ts`; `*.stories.ts` next to components |
|
|
193
|
+
| Lib build externals | `vite.lib.config.ts` → `rollupOptions.external` |
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Behavior notes (implementation)
|
|
198
|
+
|
|
199
|
+
- **PfInput / PfTextarea:** overlay + optional **`animatedText`**; tokens **`--pf-input-char-*`**.
|
|
200
|
+
- **PfSwitch / PfSlider / PfSelect:** follow **`docs/theming.md`** and existing **`index.vue`** (slider tooltip; select Teleport panel).
|
|
201
|
+
- **PfApp:** shell, portals, toaster, tooltip provider — see Storybook and **`docs/theming.md`**.
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## Notes for LLMs
|
|
206
|
+
|
|
207
|
+
- **What this library is:** A cohesive **admin-focused** Vue 3 kit with **SCSS + CSS variables**, not Tailwind. Good when you want shipped styles and **`--pf-*`** theming without utility-class UI.
|
|
208
|
+
- **When to suggest something else:** If the user wants **Tailwind-first** components → consider **Nuxt UI** or **shadcn-vue**. If **Material** or **Ant Design** aesthetics → **Vuetify** / **ant-design-vue**. If **headless only** → **Reka UI** / Headless UI. If **no design system** → primitives only.
|
|
209
|
+
- **Key facts:** No runtime npm **dependencies** (peers only); **`PfTable`** needs **`@tanstack/vue-table`**; **`PfEditor`** needs the **`@tiptap/*`** peer set aligned on versions; **`PfLink`** needs **`vue-router`**.
|
|
210
|
+
- **Quality bar:** Prefer **`transform` / `opacity`** for motion; use **`var(--pf-animation-*)`** from theme. Match existing **`index.vue`** patterns when adding or changing components.
|
|
211
|
+
- **Tests:** Vitest **`*.spec.ts`** beside components; run **`npm run build`** and **`npm test`** after API changes.
|
|
212
|
+
- **Retrieval keywords:** vue admin ui, prismify-ui, pf components, css variables theming, nuxt 4 ui, scss component library, vue data table tanstack, tiptap editor vue, dashboard layout vue.
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Using with Cursor / other AI tools
|
|
217
|
+
|
|
218
|
+
Attach this file or raw URLs above with **`@`** (type **`@`** manually so the tool recognizes context). For token values, attach **`docs/theming.md`** or its [raw URL](https://raw.githubusercontent.com/koirodev/prismify-ui/main/docs/theming.md).
|
|
219
|
+
|
|
220
|
+
**npm package** ships **`dist/`**, **`docs/`**, **`src/styles/`**, **`llms.txt`**, etc. (see **`package.json` → `files`**). Consumers use **`prismify-ui/style.css`** or **`prismify-ui/styles`**.
|
package/package.json
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "prismify-ui",
|
|
3
|
+
"version": "0.1.0-alpha.1",
|
|
4
|
+
"description": "Vue 3 UI kit (SCSS only). Compatible with Nuxt 4.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"sideEffects": [
|
|
8
|
+
"**/*.css",
|
|
9
|
+
"**/*.scss",
|
|
10
|
+
"**/*.vue"
|
|
11
|
+
],
|
|
12
|
+
"main": "./dist/prismify-ui.cjs",
|
|
13
|
+
"module": "./dist/prismify-ui.js",
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"docs",
|
|
18
|
+
"src/styles",
|
|
19
|
+
"LICENSE",
|
|
20
|
+
"CODE_OF_CONDUCT.md",
|
|
21
|
+
"CHANGELOG.md",
|
|
22
|
+
"llms.txt"
|
|
23
|
+
],
|
|
24
|
+
"exports": {
|
|
25
|
+
".": {
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"import": "./dist/prismify-ui.js",
|
|
28
|
+
"require": "./dist/prismify-ui.cjs"
|
|
29
|
+
},
|
|
30
|
+
"./style.css": "./dist/style.css",
|
|
31
|
+
"./styles": "./src/styles/index.scss"
|
|
32
|
+
},
|
|
33
|
+
"engines": {
|
|
34
|
+
"node": ">=18.18.0"
|
|
35
|
+
},
|
|
36
|
+
"peerDependencies": {
|
|
37
|
+
"@internationalized/date": "^3.12.0",
|
|
38
|
+
"@internationalized/number": "^3.6.5",
|
|
39
|
+
"@tanstack/vue-table": "^8.21.3",
|
|
40
|
+
"@tiptap/core": "^3.22.3",
|
|
41
|
+
"@tiptap/extension-bubble-menu": "^3.22.3",
|
|
42
|
+
"@tiptap/extension-drag-handle": "^3.22.3",
|
|
43
|
+
"@tiptap/extension-drag-handle-vue-3": "^3.22.3",
|
|
44
|
+
"@tiptap/extension-emoji": "^3.22.3",
|
|
45
|
+
"@tiptap/extension-floating-menu": "^3.22.3",
|
|
46
|
+
"@tiptap/extension-image": "^3.22.3",
|
|
47
|
+
"@tiptap/extension-link": "^3.22.3",
|
|
48
|
+
"@tiptap/extension-mention": "^3.22.3",
|
|
49
|
+
"@tiptap/extension-node-range": "^3.22.3",
|
|
50
|
+
"@tiptap/extension-placeholder": "^3.22.3",
|
|
51
|
+
"@tiptap/extension-text-align": "^3.22.3",
|
|
52
|
+
"@tiptap/extension-underline": "^3.22.3",
|
|
53
|
+
"@tiptap/markdown": "^3.22.3",
|
|
54
|
+
"@tiptap/pm": "^3.22.3",
|
|
55
|
+
"@tiptap/starter-kit": "^3.22.3",
|
|
56
|
+
"@tiptap/suggestion": "^3.22.3",
|
|
57
|
+
"@tiptap/vue-3": "^3.22.3",
|
|
58
|
+
"vue": "^3.4.0",
|
|
59
|
+
"vue-router": "^4.0.0"
|
|
60
|
+
},
|
|
61
|
+
"scripts": {
|
|
62
|
+
"dev": "vite build --config vite.lib.config.ts --watch",
|
|
63
|
+
"playground": "vite --config vite.playground.config.ts",
|
|
64
|
+
"icons:build": "node scripts/build-pf-icons-from-svg.mjs",
|
|
65
|
+
"prebuild": "npm run icons:build",
|
|
66
|
+
"build": "vite build --config vite.lib.config.ts",
|
|
67
|
+
"test": "vitest run",
|
|
68
|
+
"test:watch": "vitest",
|
|
69
|
+
"lint": "eslint .",
|
|
70
|
+
"lint:fix": "eslint . --fix",
|
|
71
|
+
"storybook": "storybook dev -p 6006",
|
|
72
|
+
"build-storybook": "storybook build",
|
|
73
|
+
"prepublishOnly": "npm run test && npm run build",
|
|
74
|
+
"version:alpha": "npm version prerelease --preid=alpha --no-git-tag-version",
|
|
75
|
+
"release:alpha": "npm publish --tag alpha"
|
|
76
|
+
},
|
|
77
|
+
"keywords": [
|
|
78
|
+
"vue",
|
|
79
|
+
"vue3",
|
|
80
|
+
"nuxt",
|
|
81
|
+
"nuxt4",
|
|
82
|
+
"admin",
|
|
83
|
+
"ui",
|
|
84
|
+
"components",
|
|
85
|
+
"scss"
|
|
86
|
+
],
|
|
87
|
+
"repository": {
|
|
88
|
+
"type": "git",
|
|
89
|
+
"url": "git+https://github.com/koirodev/prismify-ui.git"
|
|
90
|
+
},
|
|
91
|
+
"homepage": "https://github.com/koirodev/prismify-ui#readme",
|
|
92
|
+
"bugs": {
|
|
93
|
+
"url": "https://github.com/koirodev/prismify-ui/issues"
|
|
94
|
+
},
|
|
95
|
+
"publishConfig": {
|
|
96
|
+
"access": "public"
|
|
97
|
+
},
|
|
98
|
+
"devDependencies": {
|
|
99
|
+
"@internationalized/date": "^3.12.0",
|
|
100
|
+
"@internationalized/number": "^3.6.5",
|
|
101
|
+
"@storybook/addon-essentials": "^8.6.14",
|
|
102
|
+
"@storybook/vue3-vite": "^8.6.14",
|
|
103
|
+
"@tanstack/table-core": "^8.21.3",
|
|
104
|
+
"@tanstack/vue-table": "^8.21.3",
|
|
105
|
+
"@tiptap/core": "^3.22.3",
|
|
106
|
+
"@tiptap/extension-bubble-menu": "^3.22.3",
|
|
107
|
+
"@tiptap/extension-drag-handle": "^3.22.3",
|
|
108
|
+
"@tiptap/extension-drag-handle-vue-3": "^3.22.3",
|
|
109
|
+
"@tiptap/extension-emoji": "^3.22.3",
|
|
110
|
+
"@tiptap/extension-floating-menu": "^3.22.3",
|
|
111
|
+
"@tiptap/extension-image": "^3.22.3",
|
|
112
|
+
"@tiptap/extension-link": "^3.22.3",
|
|
113
|
+
"@tiptap/extension-mention": "^3.22.3",
|
|
114
|
+
"@tiptap/extension-node-range": "^3.22.3",
|
|
115
|
+
"@tiptap/extension-placeholder": "^3.22.3",
|
|
116
|
+
"@tiptap/extension-text-align": "^3.22.3",
|
|
117
|
+
"@tiptap/extension-underline": "^3.22.3",
|
|
118
|
+
"@tiptap/markdown": "^3.22.3",
|
|
119
|
+
"@tiptap/pm": "^3.22.3",
|
|
120
|
+
"@tiptap/starter-kit": "^3.22.3",
|
|
121
|
+
"@tiptap/suggestion": "^3.22.3",
|
|
122
|
+
"@tiptap/vue-3": "^3.22.3",
|
|
123
|
+
"@types/node": "^25.5.0",
|
|
124
|
+
"@typescript-eslint/eslint-plugin": "^8.28.0",
|
|
125
|
+
"@typescript-eslint/parser": "^8.28.0",
|
|
126
|
+
"@vitejs/plugin-vue": "^5.2.3",
|
|
127
|
+
"@vue/test-utils": "^2.4.6",
|
|
128
|
+
"autoprefixer": "^10.4.27",
|
|
129
|
+
"eslint": "^9.23.0",
|
|
130
|
+
"eslint-plugin-prettier": "^5.2.5",
|
|
131
|
+
"eslint-plugin-vue": "^10.0.0",
|
|
132
|
+
"happy-dom": "^17.4.4",
|
|
133
|
+
"jiti": "^2.4.2",
|
|
134
|
+
"postcss": "^8.5.8",
|
|
135
|
+
"prettier": "^3.5.3",
|
|
136
|
+
"sass": "^1.86.0",
|
|
137
|
+
"storybook": "^8.6.14",
|
|
138
|
+
"typescript": "~5.8.2",
|
|
139
|
+
"vite": "^6.2.3",
|
|
140
|
+
"vite-plugin-dts": "^4.5.3",
|
|
141
|
+
"vitest": "^3.0.9",
|
|
142
|
+
"vue": "^3.5.13",
|
|
143
|
+
"vue-eslint-parser": "^10.1.1",
|
|
144
|
+
"vue-router": "^4.6.4"
|
|
145
|
+
}
|
|
146
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
@use './variables/colors';
|
|
2
|
+
@use './variables/link';
|
|
3
|
+
@use './variables/breadcrumb';
|
|
4
|
+
@use './variables/typography';
|
|
5
|
+
@use './variables/accordion';
|
|
6
|
+
@use './variables/tabs';
|
|
7
|
+
@use './variables/empty';
|
|
8
|
+
@use './variables/table';
|
|
9
|
+
@use './variables/timeline';
|
|
10
|
+
@use './variables/stepper';
|
|
11
|
+
@use './variables/layout';
|
|
12
|
+
@use './variables/footerColumns';
|
|
13
|
+
@use './variables/fileUpload';
|
|
14
|
+
@use './variables/effects';
|
|
15
|
+
@use './variables/animation';
|
|
16
|
+
@use './variables/marquee';
|
|
17
|
+
@use './variables/tree';
|
|
18
|
+
@use './variables/navigationMenu';
|
|
19
|
+
@use './variables/contextMenu';
|
|
20
|
+
@use './variables/tooltip';
|
|
21
|
+
@use './variables/modal';
|
|
22
|
+
@use './variables/drawer';
|
|
23
|
+
@use './variables/toast';
|
|
24
|
+
@use './variables/editor';
|
|
25
|
+
@use './variables/dashboard';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@use './variables';
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// Shared tag pill styles (PfInputTags, PfInputMenu multiple).
|
|
2
|
+
@mixin pf-input-tag-pill {
|
|
3
|
+
padding-block: 1px;
|
|
4
|
+
padding-inline: var(--pf-space-sm) calc(var(--pf-space-sm) / 1.5);
|
|
5
|
+
max-width: 100%;
|
|
6
|
+
display: inline-flex;
|
|
7
|
+
align-items: center;
|
|
8
|
+
gap: var(--pf-space-xs);
|
|
9
|
+
box-sizing: border-box;
|
|
10
|
+
|
|
11
|
+
color: var(--pf-input-text, var(--pf-color-text));
|
|
12
|
+
font-size: var(--pf-input-font-size, inherit);
|
|
13
|
+
line-height: var(--pf-input-line-height, inherit);
|
|
14
|
+
|
|
15
|
+
box-shadow: inset 0 0 0 var(--pf-stroke-width) var(--pf-border-color);
|
|
16
|
+
background: var(--pf-color-surface-elevated, var(--pf-color-surface));
|
|
17
|
+
border-radius: var(--pf-radius-sm, var(--pf-input-radius));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@mixin pf-input-tag-text {
|
|
21
|
+
min-width: 0;
|
|
22
|
+
|
|
23
|
+
text-overflow: ellipsis;
|
|
24
|
+
white-space: nowrap;
|
|
25
|
+
|
|
26
|
+
overflow: hidden;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@mixin pf-input-tag-remove {
|
|
30
|
+
margin: 0;
|
|
31
|
+
|
|
32
|
+
padding: 1px;
|
|
33
|
+
display: inline-flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
justify-content: center;
|
|
36
|
+
flex-shrink: 0;
|
|
37
|
+
|
|
38
|
+
color: var(--pf-input-muted, var(--pf-color-muted));
|
|
39
|
+
line-height: 0;
|
|
40
|
+
|
|
41
|
+
background: none;
|
|
42
|
+
border: none;
|
|
43
|
+
border-radius: var(--pf-radius-xs);
|
|
44
|
+
|
|
45
|
+
transition:
|
|
46
|
+
color var(--pf-animation-duration) var(--pf-animation-easing),
|
|
47
|
+
background-color var(--pf-animation-duration) var(--pf-animation-easing);
|
|
48
|
+
|
|
49
|
+
cursor: pointer;
|
|
50
|
+
|
|
51
|
+
&:not(:disabled):hover {
|
|
52
|
+
color: var(--pf-input-text, var(--pf-color-text));
|
|
53
|
+
|
|
54
|
+
background: var(--pf-color-surface-muted, transparent);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
&:disabled {
|
|
58
|
+
opacity: 0.55;
|
|
59
|
+
|
|
60
|
+
cursor: not-allowed;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@mixin pf-input-tags-cluster {
|
|
65
|
+
margin-inline-end: var(--pf-space-xs);
|
|
66
|
+
|
|
67
|
+
max-width: 100%;
|
|
68
|
+
display: flex;
|
|
69
|
+
align-items: center;
|
|
70
|
+
flex-wrap: wrap;
|
|
71
|
+
gap: var(--pf-space-xs);
|
|
72
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// PfAccordion
|
|
2
|
+
:root {
|
|
3
|
+
--pf-accordion-item-border: var(--pf-stroke-width) solid
|
|
4
|
+
var(--pf-border-color);
|
|
5
|
+
--pf-accordion-trigger-padding-y: 0.875rem;
|
|
6
|
+
--pf-accordion-trigger-gap: 0.375rem;
|
|
7
|
+
--pf-accordion-label-font-size: var(--pf-font-size-sm);
|
|
8
|
+
--pf-accordion-label-font-weight: var(--pf-font-weight-medium);
|
|
9
|
+
--pf-accordion-body-font-size: var(--pf-font-size-sm);
|
|
10
|
+
--pf-accordion-body-padding-bottom: 0.875rem;
|
|
11
|
+
--pf-accordion-panel-duration: 0.2s;
|
|
12
|
+
--pf-accordion-panel-easing: ease-out;
|
|
13
|
+
--pf-accordion-trailing-rotate-duration: 0.2s;
|
|
14
|
+
--pf-accordion-trailing-rotate-easing: ease-out;
|
|
15
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Animation variables
|
|
2
|
+
:root {
|
|
3
|
+
--pf-animation-duration: 0.45s;
|
|
4
|
+
--pf-animation-easing: cubic-bezier(0.36, 0.3, 0, 1);
|
|
5
|
+
|
|
6
|
+
/* PfProgress: indeterminate state */
|
|
7
|
+
--pf-progress-indeterminate-duration: 2s;
|
|
8
|
+
--pf-progress-indeterminate-easing: ease-in-out;
|
|
9
|
+
|
|
10
|
+
/* PfSkeleton: pulse cycle (Tailwind animate-pulse–like) */
|
|
11
|
+
--pf-skeleton-pulse-duration: 2s;
|
|
12
|
+
--pf-skeleton-pulse-mid-opacity: 0.55;
|
|
13
|
+
|
|
14
|
+
/* PfInput: character appear and “drop” with `animated-text` */
|
|
15
|
+
--pf-input-char-appear-duration: 0.2s;
|
|
16
|
+
--pf-input-char-appear-easing: ease-out;
|
|
17
|
+
--pf-input-char-fall-duration: 0.18s;
|
|
18
|
+
--pf-input-char-fall-easing: ease-in;
|
|
19
|
+
|
|
20
|
+
/* PfSwitch: thumb movement and “squish” on toggle */
|
|
21
|
+
--pf-switch-move-duration: 0.4s;
|
|
22
|
+
--pf-switch-move-easing: cubic-bezier(0.45, 0, 0.2, 1);
|
|
23
|
+
--pf-switch-squish-duration: 0.45s;
|
|
24
|
+
--pf-switch-squish-easing: cubic-bezier(0.45, 0, 0.25, 1.25);
|
|
25
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// PfBreadcrumb
|
|
2
|
+
:root {
|
|
3
|
+
--pf-breadcrumb-gap: 0.375rem;
|
|
4
|
+
--pf-breadcrumb-font-size: var(--pf-font-size-sm);
|
|
5
|
+
--pf-breadcrumb-font-weight: var(--pf-font-weight-medium);
|
|
6
|
+
--pf-breadcrumb-font-weight-current: var(--pf-font-weight-bold);
|
|
7
|
+
--pf-breadcrumb-color-muted: var(--pf-color-muted);
|
|
8
|
+
--pf-breadcrumb-color-current: var(--pf-color-primary);
|
|
9
|
+
--pf-breadcrumb-link-gap: 0.375rem;
|
|
10
|
+
--pf-breadcrumb-separator-color: var(--pf-color-muted);
|
|
11
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Color tokens — override in your app: :root, .dark, or a scoped wrapper.
|
|
2
|
+
:root {
|
|
3
|
+
--pf-color-surface: #ffffff;
|
|
4
|
+
--pf-color-text: #0f172a;
|
|
5
|
+
--pf-color-muted: #64748b;
|
|
6
|
+
|
|
7
|
+
--pf-color-primary: #1493b8;
|
|
8
|
+
--pf-color-primary-hover: #0f7fa1;
|
|
9
|
+
|
|
10
|
+
--pf-color-secondary: #6366f1;
|
|
11
|
+
--pf-color-secondary-hover: #4f46e5;
|
|
12
|
+
|
|
13
|
+
--pf-color-success: #16a34a;
|
|
14
|
+
--pf-color-success-hover: #15803d;
|
|
15
|
+
|
|
16
|
+
--pf-color-info: #2563eb;
|
|
17
|
+
--pf-color-info-hover: #1d4ed8;
|
|
18
|
+
|
|
19
|
+
--pf-color-warning: #d97706;
|
|
20
|
+
--pf-color-warning-hover: #b45309;
|
|
21
|
+
|
|
22
|
+
--pf-color-error: #dc2626;
|
|
23
|
+
--pf-color-error-hover: #b91c1c;
|
|
24
|
+
|
|
25
|
+
--pf-color-neutral: #64748b;
|
|
26
|
+
--pf-color-neutral-hover: #475569;
|
|
27
|
+
|
|
28
|
+
--pf-border-color: #e2e8f0;
|
|
29
|
+
--pf-border-color-hover: #cbd5e1;
|
|
30
|
+
|
|
31
|
+
/* PfSkeleton: placeholder fill (slightly above surface, below border) */
|
|
32
|
+
--pf-skeleton-bg: color-mix(
|
|
33
|
+
in srgb,
|
|
34
|
+
var(--pf-color-muted) 14%,
|
|
35
|
+
var(--pf-color-surface)
|
|
36
|
+
);
|
|
37
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
/* PfContextMenu: layer and backdrop (modal); above PfSelect dropdowns */
|
|
3
|
+
--pf-context-menu-z-index: 10000;
|
|
4
|
+
--pf-context-menu-backdrop-z-index: 9999;
|
|
5
|
+
|
|
6
|
+
/* Panel: same role as PfSelect custom panel */
|
|
7
|
+
--pf-context-menu-min-width: 10rem;
|
|
8
|
+
--pf-context-menu-max-height: min(18rem, 70vh);
|
|
9
|
+
--pf-context-menu-padding: var(--pf-space-xs);
|
|
10
|
+
--pf-context-menu-gap: var(--pf-space-sm);
|
|
11
|
+
--pf-context-menu-submenu-gap: 4px;
|
|
12
|
+
--pf-context-menu-font-size: var(--pf-font-size-sm);
|
|
13
|
+
--pf-context-menu-line-height: var(--pf-line-height-md);
|
|
14
|
+
--pf-context-menu-group-label-font-size: var(--pf-font-size-xs);
|
|
15
|
+
--pf-context-menu-group-label-font-weight: var(--pf-font-weight-bold);
|
|
16
|
+
--pf-context-menu-item-description-font-size: var(--pf-font-size-xs);
|
|
17
|
+
--pf-context-menu-empty-font-size: var(--pf-font-size-sm);
|
|
18
|
+
|
|
19
|
+
--pf-context-menu-surface: var(--pf-color-surface, #ffffff);
|
|
20
|
+
--pf-context-menu-border: var(--pf-border-color, #e2e8f0);
|
|
21
|
+
--pf-context-menu-text: var(--pf-color-text, #0f172a);
|
|
22
|
+
--pf-context-menu-muted: var(--pf-color-muted, #64748b);
|
|
23
|
+
--pf-context-menu-item-hover: color-mix(
|
|
24
|
+
in srgb,
|
|
25
|
+
var(--pf-context-menu-muted, #71717a) 14%,
|
|
26
|
+
transparent
|
|
27
|
+
);
|
|
28
|
+
--pf-context-menu-radius: var(--pf-radius-sm, 0.375rem);
|
|
29
|
+
--pf-context-menu-shadow: 0 var(--pf-space-xs) var(--pf-space-lg)
|
|
30
|
+
color-mix(in srgb, var(--pf-context-menu-text, #18181b) 12%, transparent);
|
|
31
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
/* PfDrawer: layer (above modal when nested via inline style) */
|
|
3
|
+
--pf-drawer-z-index: 9010;
|
|
4
|
+
|
|
5
|
+
/* Geometry */
|
|
6
|
+
--pf-drawer-max-size: 96dvh;
|
|
7
|
+
--pf-drawer-side-max-size: calc(100% - 2rem);
|
|
8
|
+
--pf-drawer-radius: var(--pf-radius-lg);
|
|
9
|
+
--pf-drawer-inset: var(--pf-space-md);
|
|
10
|
+
--pf-drawer-shadow: 0 calc(-1 * var(--pf-space-xs)) var(--pf-space-xl)
|
|
11
|
+
color-mix(in srgb, var(--pf-color-text) 12%, transparent);
|
|
12
|
+
|
|
13
|
+
/* Handle */
|
|
14
|
+
--pf-drawer-handle-width: 3rem;
|
|
15
|
+
--pf-drawer-handle-thickness: 0.375rem;
|
|
16
|
+
--pf-drawer-handle-radius: var(--pf-radius-full);
|
|
17
|
+
--pf-drawer-handle-gap: var(--pf-space-md);
|
|
18
|
+
|
|
19
|
+
/* Overlay */
|
|
20
|
+
--pf-drawer-overlay-bg: color-mix(
|
|
21
|
+
in srgb,
|
|
22
|
+
var(--pf-color-text) 45%,
|
|
23
|
+
transparent
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
/* Container and padding */
|
|
27
|
+
--pf-drawer-padding-x: var(--pf-space-lg);
|
|
28
|
+
--pf-drawer-padding-y: var(--pf-space-lg);
|
|
29
|
+
--pf-drawer-header-padding-y: var(--pf-space-md);
|
|
30
|
+
--pf-drawer-footer-padding-y: var(--pf-space-md);
|
|
31
|
+
|
|
32
|
+
/* Background when scaled (optional) */
|
|
33
|
+
--pf-drawer-scale-bg: var(--pf-color-surface);
|
|
34
|
+
}
|