@vuetify/v0 0.1.8 → 0.1.9
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/SKILL.md +95 -0
- package/dist/adapter-CWp5eQ6R.d.mts +17 -0
- package/dist/{adapter-DIx4Rntl.d.mts → adapter-hDuQ9aNN.d.mts} +4 -4
- package/dist/browser/index.js +1352 -360
- package/dist/components/index.d.mts +2 -2
- package/dist/components/index.mjs +23 -23
- package/dist/{components-BbxKYAXs.mjs → components-mSy9az8x.mjs} +456 -231
- package/dist/composables/index.d.mts +16 -15
- package/dist/composables/index.mjs +22 -22
- package/dist/{consola-BVzYzeLH.d.mts → consola-C1OjyZVf.d.mts} +1 -1
- package/dist/constants/index.d.mts +1 -1
- package/dist/constants/index.mjs +1 -1
- package/dist/{createDataTable-DZouEhvH.mjs → createDataTable-DIl09siC.mjs} +5 -5
- package/dist/{createGroup-BpJFi41X.mjs → createGroup-PvzsLu9E.mjs} +1 -1
- package/dist/{createPagination-Bu8vE0JW.mjs → createPagination-DZSJ8aO5.mjs} +5 -5
- package/dist/{createSelection-8MX0OHXR.mjs → createSelection-DbWP6c7H.mjs} +1 -1
- package/dist/{createSingle-CbuOBb-E.mjs → createSingle-CeAJpbXs.mjs} +6 -6
- package/dist/{createTokens-CXlT0Vc6.mjs → createTokens-C1gIuKCK.mjs} +25 -4
- package/dist/data-table/adapters/client/index.d.mts +1 -1
- package/dist/data-table/adapters/client/index.mjs +3 -3
- package/dist/data-table/adapters/index.d.mts +4 -4
- package/dist/data-table/adapters/index.mjs +5 -5
- package/dist/data-table/adapters/server/index.d.mts +1 -1
- package/dist/data-table/adapters/server/index.mjs +3 -3
- package/dist/data-table/adapters/virtual/index.d.mts +1 -1
- package/dist/data-table/adapters/virtual/index.mjs +3 -3
- package/dist/data-table/index.d.mts +5 -5
- package/dist/data-table/index.mjs +14 -14
- package/dist/date/index.mjs +1 -1
- package/dist/features/adapters/posthog/index.mjs +2 -2
- package/dist/features/index.d.mts +1 -1
- package/dist/features/index.mjs +8 -8
- package/dist/{globals-ClSU6mqC.mjs → globals-3i9umzyz.mjs} +1 -1
- package/dist/{index-CxW4itj1.d.mts → index-BoK8Ln2f.d.mts} +1 -1
- package/dist/{index-B5NU2uB7.d.mts → index-C5XZRWlO.d.mts} +506 -166
- package/dist/{index-CmCMrlt3.d.mts → index-CLDBngUs.d.mts} +1 -1
- package/dist/{index-63-0oJS8.d.mts → index-D0qnkRbl.d.mts} +389 -183
- package/dist/index.d.mts +19 -18
- package/dist/index.mjs +23 -23
- package/dist/json/attributes.json +60 -0
- package/dist/json/importMap.json +24 -0
- package/dist/json/tags.json +40 -0
- package/dist/json/web-types.json +221 -1
- package/dist/locale/adapters/index.d.mts +3 -2
- package/dist/locale/adapters/index.mjs +2 -2
- package/dist/locale/adapters/v0/index.d.mts +1 -1
- package/dist/locale/adapters/v0/index.mjs +2 -2
- package/dist/locale/adapters/vue-i18n/index.d.mts +22 -0
- package/dist/locale/adapters/vue-i18n/index.mjs +26 -0
- package/dist/locale/index.d.mts +4 -3
- package/dist/locale/index.mjs +8 -9
- package/dist/logger/adapters/consola/index.d.mts +1 -1
- package/dist/logger/adapters/index.d.mts +4 -4
- package/dist/logger/adapters/index.mjs +2 -2
- package/dist/logger/adapters/pino/index.d.mts +1 -1
- package/dist/logger/adapters/pino/index.mjs +1 -1
- package/dist/logger/adapters/v0/index.d.mts +1 -1
- package/dist/logger/adapters/v0/index.mjs +2 -2
- package/dist/logger/index.d.mts +5 -5
- package/dist/logger/index.mjs +3 -3
- package/dist/notifications/index.d.mts +78 -0
- package/dist/notifications/index.mjs +215 -0
- package/dist/palettes/ant/index.d.mts +1 -1
- package/dist/palettes/index.d.mts +2 -2
- package/dist/palettes/material/index.d.mts +1 -1
- package/dist/palettes/md1/index.d.mts +1 -1
- package/dist/palettes/md2/index.d.mts +1 -1
- package/dist/palettes/radix/index.d.mts +1 -1
- package/dist/palettes/tailwind/index.d.mts +1 -1
- package/dist/permissions/adapters/index.d.mts +2 -2
- package/dist/permissions/adapters/index.mjs +1 -1
- package/dist/permissions/adapters/v0/index.d.mts +1 -1
- package/dist/permissions/adapters/v0/index.mjs +1 -1
- package/dist/permissions/index.d.mts +1 -1
- package/dist/permissions/index.mjs +5 -5
- package/dist/{pino-Bzighnkd.d.mts → pino-CM1iLXmi.d.mts} +1 -1
- package/dist/{posthog-BE7-t7cV.mjs → posthog-CCQFQ5XD.mjs} +1 -1
- package/dist/rules/index.d.mts +1 -1
- package/dist/rules/index.mjs +9 -10
- package/dist/{server-Ch9J86tb.d.mts → server-Ct-h4-OA.d.mts} +1 -1
- package/dist/{server-CZ6ahbEH.mjs → server-DHET3KNW.mjs} +1 -1
- package/dist/storage/adapters/index.d.mts +2 -2
- package/dist/storage/adapters/memory/index.d.mts +1 -1
- package/dist/storage/index.d.mts +3 -3
- package/dist/storage/index.mjs +21 -21
- package/dist/theme/adapters/index.d.mts +1 -1
- package/dist/theme/adapters/index.mjs +2 -2
- package/dist/theme/adapters/v0/index.d.mts +1 -1
- package/dist/theme/adapters/v0/index.mjs +2 -2
- package/dist/theme/index.d.mts +1 -1
- package/dist/theme/index.mjs +8 -8
- package/dist/{useClickOutside-W0Sur1rC.mjs → useClickOutside-hOhNk4eS.mjs} +860 -126
- package/dist/{useFeatures-CUicSI-E.mjs → useFeatures-CXRQvucQ.mjs} +3 -3
- package/dist/useLocale-BaufqE5Z.mjs +69 -0
- package/dist/{useLogger-DY1Hbcy1.mjs → useLogger-cGK00Ywd.mjs} +2 -2
- package/dist/{usePermissions-BSW59R4q.mjs → usePermissions-CR0HkjsF.mjs} +2 -2
- package/dist/{useRules-BbA6_gvs.mjs → useRules-LD-_-Hxt.mjs} +2 -2
- package/dist/{useTheme-Bdx2Lj5c.mjs → useTheme-Cs79AFNR.mjs} +5 -5
- package/dist/utilities/index.d.mts +1 -1
- package/dist/utilities/index.mjs +2 -1
- package/dist/{v0-BFseIsBi.mjs → v0-BJYwZgtp.mjs} +1 -1
- package/dist/v0-BdD1F6JK.d.mts +19 -0
- package/dist/{v0-YAqbXudL.mjs → v0-BoWQ8RK0.mjs} +1 -1
- package/dist/{v0-CdUL2eOn.d.mts → v0-CMeh39LQ.d.mts} +1 -1
- package/dist/v0-CehUknHv.mjs +62 -0
- package/dist/{v0-BZINNGoC.d.mts → v0-DFAgNbvC.d.mts} +1 -1
- package/dist/{v0-1xxC39wf.d.mts → v0-JPf99NKg.d.mts} +1 -1
- package/dist/{v0-2G2476h-.mjs → v0-Zu7neOYg.mjs} +1 -1
- package/dist/{virtual-DwBiFA25.d.mts → virtual-B1lRbO7Q.d.mts} +1 -1
- package/dist/{virtual-eDNVH1fz.mjs → virtual-D0_D5gkh.mjs} +1 -1
- package/package.json +11 -4
- package/dist/useLocale-cQlPxbpV.mjs +0 -87
- package/dist/v0-CAKa6tzG.d.mts +0 -22
- package/dist/v0-CHBrvw49.mjs +0 -35
- /package/dist/{adapter-JTFG3Jn8.d.mts → adapter-CJQav2JB.d.mts} +0 -0
- /package/dist/{index-MHkcqY_y.d.mts → index-BL4uTXWQ.d.mts} +0 -0
- /package/dist/{index-B5ZDDkXv.d.mts → index-BvTD7kU8.d.mts} +0 -0
- /package/dist/{index-NsE5nARK.d.mts → index-DSao7i57.d.mts} +0 -0
- /package/dist/{memory-BTtRdnNn.d.mts → memory-DyBabFV1.d.mts} +0 -0
package/SKILL.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vuetify0
|
|
3
|
+
description: Build with @vuetify/v0 headless composables and components for Vue 3. Use when creating selection state (single, multi, grouped, stepped), form validation, tab/dialog/popover UI, provide/inject context, registries, virtual scrolling, pagination, keyboard shortcuts, resize observers, theming, breakpoints, or SSR-safe browser detection. Triggers on v0, vuetify0, headless components, or WAI-ARIA patterns.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Vuetify0 - Headless Composables & Components
|
|
7
|
+
|
|
8
|
+
Transform Vue 3 apps with unstyled, logic-focused building blocks for design systems.
|
|
9
|
+
|
|
10
|
+
## Quick Start
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
pnpm install @vuetify/v0
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
No global plugin required. Import only what you need:
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
import { createSelection } from '@vuetify/v0/composables'
|
|
20
|
+
import { Tabs } from '@vuetify/v0/components'
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Core Decision Tree
|
|
24
|
+
|
|
25
|
+
**Before writing custom logic**, check if v0 already provides it:
|
|
26
|
+
|
|
27
|
+
| Need | Use |
|
|
28
|
+
|------|-----|
|
|
29
|
+
| Single item selection | `createSingle` |
|
|
30
|
+
| Multi-item selection | `createSelection` |
|
|
31
|
+
| Selection with "select all" | `createGroup` |
|
|
32
|
+
| Step wizard / carousel | `createStep` |
|
|
33
|
+
| Form validation | `createForm` |
|
|
34
|
+
| Shared state (provide/inject) | `createContext` |
|
|
35
|
+
| Browser utilities | `IN_BROWSER`, `useBreakpoints`, `useMediaQuery` |
|
|
36
|
+
|
|
37
|
+
## Component Architecture
|
|
38
|
+
|
|
39
|
+
All components are **headless** (unstyled) and follow WAI-ARIA patterns:
|
|
40
|
+
|
|
41
|
+
```vue
|
|
42
|
+
<script setup>
|
|
43
|
+
import { Tabs } from '@vuetify/v0/components'
|
|
44
|
+
</script>
|
|
45
|
+
|
|
46
|
+
<template>
|
|
47
|
+
<Tabs.Root v-model="active">
|
|
48
|
+
<Tabs.List>
|
|
49
|
+
<Tabs.Item value="overview">Overview</Tabs.Item>
|
|
50
|
+
</Tabs.List>
|
|
51
|
+
<Tabs.Panel value="overview">Content</Tabs.Panel>
|
|
52
|
+
</Tabs.Root>
|
|
53
|
+
</template>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Available components**: Dialog, Tabs, ExpansionPanel, Checkbox, Radio, Popover, Pagination, Select, Slider, Splitter, Switch, Avatar, Breadcrumbs, Form, Input, Scrim
|
|
57
|
+
|
|
58
|
+
## Essential Patterns
|
|
59
|
+
|
|
60
|
+
### Selection State
|
|
61
|
+
```ts
|
|
62
|
+
// Single selection (tabs, theme picker)
|
|
63
|
+
const single = createSingle({ mandatory: 'force' })
|
|
64
|
+
|
|
65
|
+
// Multi-selection (tags, filters)
|
|
66
|
+
const selection = createSelection({ multiple: true })
|
|
67
|
+
|
|
68
|
+
// Group with "select all" (data tables)
|
|
69
|
+
const group = createGroup()
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Context Sharing
|
|
73
|
+
```ts
|
|
74
|
+
// Type-safe provide/inject
|
|
75
|
+
const [useTheme, provideTheme] = createContext<Theme>('Theme')
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Form Validation
|
|
79
|
+
```ts
|
|
80
|
+
const form = createForm()
|
|
81
|
+
form.register({ id: 'email', rules: [required, email] })
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Anti-Patterns
|
|
85
|
+
|
|
86
|
+
**Don't reinvent these wheels:**
|
|
87
|
+
|
|
88
|
+
- **Custom selection logic** → Use `createSelection`
|
|
89
|
+
- **Manual provide/inject** → Use `createContext`
|
|
90
|
+
- **SSR checks** → Use `IN_BROWSER` constant
|
|
91
|
+
|
|
92
|
+
## Resources
|
|
93
|
+
|
|
94
|
+
- **Vuetify MCP** for structured API access: `claude mcp add vuetify-mcp https://mcp.vuetifyjs.com/mcp`
|
|
95
|
+
- **Live docs**: https://0.vuetifyjs.com
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { o as ID } from "./index-Dor6eAEc.mjs";
|
|
2
|
+
import { c as TokenTicket, i as TokenContext } from "./index-BoK8Ln2f.mjs";
|
|
3
|
+
import { Ref } from "vue";
|
|
4
|
+
|
|
5
|
+
//#region src/composables/useLocale/adapters/adapter.d.ts
|
|
6
|
+
interface LocaleAdapterContext {
|
|
7
|
+
tokens: TokenContext<TokenTicket>;
|
|
8
|
+
selectedId: Ref<ID | null | undefined>;
|
|
9
|
+
fallbackLocale: ID | undefined;
|
|
10
|
+
has: (id: ID) => boolean;
|
|
11
|
+
}
|
|
12
|
+
interface LocaleAdapter {
|
|
13
|
+
t: (key: string, ...params: unknown[]) => string;
|
|
14
|
+
n: (value: number) => string;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { LocaleAdapterContext as n, LocaleAdapter as t };
|
|
@@ -133,13 +133,13 @@ interface PaginationContext {
|
|
|
133
133
|
/** Visible page numbers and ellipsis for rendering */
|
|
134
134
|
items: ComputedRef<PaginationTicket[]>;
|
|
135
135
|
/** Start index of items on current page (0-indexed) */
|
|
136
|
-
pageStart:
|
|
136
|
+
pageStart: Readonly<Ref<number>>;
|
|
137
137
|
/** End index of items on current page (exclusive, 0-indexed) */
|
|
138
|
-
pageStop:
|
|
138
|
+
pageStop: Readonly<Ref<number>>;
|
|
139
139
|
/** Whether current page is the first page */
|
|
140
|
-
isFirst:
|
|
140
|
+
isFirst: Readonly<Ref<boolean>>;
|
|
141
141
|
/** Whether current page is the last page */
|
|
142
|
-
isLast:
|
|
142
|
+
isLast: Readonly<Ref<boolean>>;
|
|
143
143
|
/** Go to first page */
|
|
144
144
|
first: () => void;
|
|
145
145
|
/** Go to last page */
|