@todovue/tv-ui 0.1.0 → 0.1.2
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/README.md +20 -20
- package/dist/entry.d.ts +2 -2
- package/dist/tv-ui.cjs.js +1 -1
- package/dist/tv-ui.css +1 -1
- package/dist/tv-ui.es.js +50 -49
- package/package.json +4 -2
- package/dist/.htaccess +0 -8
- package/dist/demos/tv-alert/CHANGELOG.md +0 -127
- package/dist/demos/tv-alert/README.md +0 -334
- package/dist/demos/tv-article/CHANGELOG.md +0 -221
- package/dist/demos/tv-article/README.md +0 -258
- package/dist/demos/tv-breadcrumbs/CHANGELOG.md +0 -135
- package/dist/demos/tv-breadcrumbs/README.md +0 -364
- package/dist/demos/tv-button/CHANGELOG.md +0 -158
- package/dist/demos/tv-button/README.md +0 -255
- package/dist/demos/tv-card/CHANGELOG.md +0 -158
- package/dist/demos/tv-card/README.md +0 -332
- package/dist/demos/tv-demo/CHANGELOG.md +0 -352
- package/dist/demos/tv-demo/README.md +0 -229
- package/dist/demos/tv-footer/CHANGELOG.md +0 -67
- package/dist/demos/tv-footer/README.md +0 -760
- package/dist/demos/tv-hero/CHANGELOG.md +0 -137
- package/dist/demos/tv-hero/README.md +0 -410
- package/dist/demos/tv-label/CHANGELOG.md +0 -138
- package/dist/demos/tv-label/README.md +0 -357
- package/dist/demos/tv-menu/CHANGELOG.md +0 -145
- package/dist/demos/tv-menu/README.md +0 -389
- package/dist/demos/tv-modal/CHANGELOG.md +0 -127
- package/dist/demos/tv-modal/README.md +0 -466
- package/dist/demos/tv-pagination/CHANGELOG.md +0 -125
- package/dist/demos/tv-pagination/README.md +0 -275
- package/dist/demos/tv-progress-bar/CHANGELOG.md +0 -84
- package/dist/demos/tv-progress-bar/README.md +0 -894
- package/dist/demos/tv-relative-time/CHANGELOG.md +0 -122
- package/dist/demos/tv-relative-time/README.md +0 -405
- package/dist/demos/tv-scroll-top/CHANGELOG.md +0 -69
- package/dist/demos/tv-scroll-top/README.md +0 -445
- package/dist/demos/tv-search/CHANGELOG.md +0 -155
- package/dist/demos/tv-search/README.md +0 -407
- package/dist/demos/tv-settings/CHANGELOG.md +0 -94
- package/dist/demos/tv-settings/README.md +0 -314
- package/dist/demos/tv-sidebar/CHANGELOG.md +0 -229
- package/dist/demos/tv-sidebar/README.md +0 -592
- package/dist/demos/tv-theme-button/CHANGELOG.md +0 -136
- package/dist/demos/tv-theme-button/README.md +0 -392
- package/dist/demos/tv-toc/CHANGELOG.md +0 -80
- package/dist/demos/tv-toc/README.md +0 -288
- package/dist/favicon.ico +0 -0
|
@@ -1,389 +0,0 @@
|
|
|
1
|
-
<p align="center"><img width="150" src="https://res.cloudinary.com/dcdfhi8qz/image/upload/v1763663056/uqqtkgp1lg3xdplutpga.png" alt="TODOvue logo">
|
|
2
|
-
</p>
|
|
3
|
-
|
|
4
|
-
# TODOvue Menu (TvMenu)
|
|
5
|
-
A flexible, responsive Vue 3 menu component with integrated search functionality, mobile-friendly navigation, and easy customization. Perfect for Single Page Apps or Server-Side Rendered (SSR) environments like Nuxt 3.
|
|
6
|
-
|
|
7
|
-
[](https://www.npmjs.com/package/@todovue/tv-menu)
|
|
8
|
-
[](https://www.npmjs.com/package/@todovue/tv-menu)
|
|
9
|
-
[](https://www.npmjs.com/package/@todovue/tv-menu)
|
|
10
|
-

|
|
11
|
-

|
|
12
|
-

|
|
13
|
-

|
|
14
|
-

|
|
15
|
-

|
|
16
|
-
|
|
17
|
-
> Demo: https://ui.todovue.blog/menu
|
|
18
|
-
|
|
19
|
-
## Table of Contents
|
|
20
|
-
- [Features](#features)
|
|
21
|
-
- [Installation](#installation)
|
|
22
|
-
- [Quick Start (SPA)](#quick-start-spa)
|
|
23
|
-
- [Nuxt 4 / SSR Usage](#nuxt-4--ssr-usage)
|
|
24
|
-
- [Component Registration Options](#component-registration-options)
|
|
25
|
-
- [Props](#props)
|
|
26
|
-
- [Events](#events)
|
|
27
|
-
- [Usage Examples](#usage-examples)
|
|
28
|
-
- [Responsive Behavior](#responsive-behavior)
|
|
29
|
-
- [Customization (Styles / Theming)](#customization-styles--theming)
|
|
30
|
-
- [Accessibility](#accessibility)
|
|
31
|
-
- [SSR Notes](#ssr-notes)
|
|
32
|
-
- [Development](#development)
|
|
33
|
-
- [Contributing](#contributing)
|
|
34
|
-
- [License](#license)
|
|
35
|
-
|
|
36
|
-
## Features
|
|
37
|
-
- Responsive navigation menu with desktop and mobile views
|
|
38
|
-
- Integrated search functionality powered by `@todovue/tv-search`
|
|
39
|
-
- Logo/image click support with custom event handling
|
|
40
|
-
- Menu item click events with data payload
|
|
41
|
-
- Automatic mobile menu toggle with hamburger icon
|
|
42
|
-
- Clean, modern design with customizable styling
|
|
43
|
-
- Works seamlessly in SPA and SSR (Nuxt 3) contexts
|
|
44
|
-
- Tree-shake friendly (Vue marked external in library build)
|
|
45
|
-
|
|
46
|
-
## Installation
|
|
47
|
-
Using npm:
|
|
48
|
-
```bash
|
|
49
|
-
npm install @todovue/tv-menu
|
|
50
|
-
```
|
|
51
|
-
Using yarn:
|
|
52
|
-
```bash
|
|
53
|
-
yarn add @todovue/tv-menu
|
|
54
|
-
```
|
|
55
|
-
Using pnpm:
|
|
56
|
-
```bash
|
|
57
|
-
pnpm add @todovue/tv-menu
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## Quick Start (SPA)
|
|
61
|
-
Global registration (main.js / main.ts):
|
|
62
|
-
```js
|
|
63
|
-
import { createApp } from 'vue'
|
|
64
|
-
import App from './App.vue'
|
|
65
|
-
import TvMenu from '@todovue/tv-menu'
|
|
66
|
-
import '@todovue/tv-menu/style.css' // import styles
|
|
67
|
-
import '@todovue/tv-search/style.css' // import styles
|
|
68
|
-
import '@todovue/tv-button/style.css' // import styles
|
|
69
|
-
|
|
70
|
-
createApp(App)
|
|
71
|
-
.use(TvMenu) // enables <TvMenu /> globally
|
|
72
|
-
.mount('#app')
|
|
73
|
-
```
|
|
74
|
-
Local import inside a component:
|
|
75
|
-
```vue
|
|
76
|
-
<script setup>
|
|
77
|
-
import { TvMenu } from '@todovue/tv-menu'
|
|
78
|
-
import '@todovue/tv-menu/style.css' // import styles
|
|
79
|
-
import '@todovue/tv-search/style.css' // import styles
|
|
80
|
-
import '@todovue/tv-button/style.css' // import styles
|
|
81
|
-
|
|
82
|
-
const menuItems = [
|
|
83
|
-
{ id: 1, title: 'Home', url: '/' },
|
|
84
|
-
{ id: 2, title: 'About', url: '/about' },
|
|
85
|
-
{ id: 3, title: 'Contact', url: '/contact' }
|
|
86
|
-
]
|
|
87
|
-
|
|
88
|
-
function handleMenuClick(menu) {
|
|
89
|
-
console.log('Clicked:', menu)
|
|
90
|
-
// Navigate to menu.url or perform custom action
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
function handleImageClick() {
|
|
94
|
-
console.log('Logo clicked')
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
function handleSearch(searchTerm) {
|
|
98
|
-
console.log('Search:', searchTerm)
|
|
99
|
-
}
|
|
100
|
-
</script>
|
|
101
|
-
|
|
102
|
-
<template>
|
|
103
|
-
<TvMenu
|
|
104
|
-
:menus="menuItems"
|
|
105
|
-
placeholder="Search..."
|
|
106
|
-
titleButton="Search"
|
|
107
|
-
imageMenu="https://example.com/logo.png"
|
|
108
|
-
@clickImage="handleImageClick"
|
|
109
|
-
@clickMenu="handleMenuClick"
|
|
110
|
-
@searchMenu="handleSearch"
|
|
111
|
-
/>
|
|
112
|
-
</template>
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## Nuxt 4 / SSR Usage
|
|
116
|
-
Create a plugin file: `plugins/tv-menu.client.ts`:
|
|
117
|
-
```ts
|
|
118
|
-
// nuxt.config.ts
|
|
119
|
-
export default defineNuxtConfig({
|
|
120
|
-
modules: [
|
|
121
|
-
'@todovue/tv-menu/nuxt'
|
|
122
|
-
]
|
|
123
|
-
})
|
|
124
|
-
```
|
|
125
|
-
Use anywhere in your Nuxt app:
|
|
126
|
-
```vue
|
|
127
|
-
<template>
|
|
128
|
-
<TvMenu
|
|
129
|
-
:menus="navigationItems"
|
|
130
|
-
placeholder="Search..."
|
|
131
|
-
imageMenu="/logo.png"
|
|
132
|
-
@clickMenu="navigateTo"
|
|
133
|
-
/>
|
|
134
|
-
</template>
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## Component Registration Options
|
|
138
|
-
| Approach | When to use |
|
|
139
|
-
|-----------------------------------------------------------------|------------------------------------------------|
|
|
140
|
-
| Global via `app.use(TvMenu)` | Many usages across app / design system install |
|
|
141
|
-
| Local named import `{ TvMenu }` | Isolated / code-split contexts |
|
|
142
|
-
| Direct default import `import TvMenu from '@todovue/tv-menu'` | Single usage or manual registration |
|
|
143
|
-
|
|
144
|
-
## Props
|
|
145
|
-
| Prop | Type | Default | Description |
|
|
146
|
-
|---------------|---------------|--------------------|----------------------------------------------------------|
|
|
147
|
-
| menus | Array | [] | Array of menu items with `{ id, title, url }` structure. |
|
|
148
|
-
| placeholder | String | '' | Placeholder text for the search input. |
|
|
149
|
-
| titleButton | String | '' | Label for the search button. |
|
|
150
|
-
| imageMenu | String | '' | URL of the logo/image to display in the menu header. |
|
|
151
|
-
| noResultsText | String | 'No results found' | Text displayed when search yields no results. |
|
|
152
|
-
| activeMenu | String/Number | null | The ID of the currently active menu item. |
|
|
153
|
-
|
|
154
|
-
### Menu Item Structure
|
|
155
|
-
Each item in the `menus` array should have this structure:
|
|
156
|
-
```js
|
|
157
|
-
{
|
|
158
|
-
id: Number, // unique identifier
|
|
159
|
-
title: String, // display text
|
|
160
|
-
url: String // navigation path or identifier
|
|
161
|
-
}
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
## Events
|
|
165
|
-
| Event name (kebab) | Payload | Description |
|
|
166
|
-
|---------------------|-------------|--------------------------------------------------|
|
|
167
|
-
| `clickImage` | — | Emitted when the logo/image is clicked. |
|
|
168
|
-
| `clickMenu` | menu object | Emitted when a menu item is clicked. |
|
|
169
|
-
| `searchMenu` | search term | Emitted when search is performed (string value). |
|
|
170
|
-
| `update:activeMenu` | menu id | Emitted when the active menu item changes. |
|
|
171
|
-
|
|
172
|
-
Usage examples:
|
|
173
|
-
```vue
|
|
174
|
-
<TvMenu
|
|
175
|
-
@clickImage="handleLogoClick"
|
|
176
|
-
@clickMenu="handleNavigation"
|
|
177
|
-
@searchMenu="performSearch"
|
|
178
|
-
/>
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
## Slots
|
|
182
|
-
| Slot Name | Props | Description |
|
|
183
|
-
|---------------|------------------------|--------------------------------------------------------|
|
|
184
|
-
| `logo` | — | Replace the default logo image. |
|
|
185
|
-
| `item` | `{ menu, isActive }` | Customize the rendering of each menu item. |
|
|
186
|
-
| `action-end` | — | Add content after the search bar (e.g., User Profile). |
|
|
187
|
-
|
|
188
|
-
### Example with Slots
|
|
189
|
-
```vue
|
|
190
|
-
<TvMenu :menus="menus" v-model:activeMenu="activeId">
|
|
191
|
-
<template #logo>
|
|
192
|
-
<div class="my-logo">My App</div>
|
|
193
|
-
</template>
|
|
194
|
-
|
|
195
|
-
<template #item="{ menu, isActive }">
|
|
196
|
-
<span :class="{ 'highlight': isActive }">
|
|
197
|
-
<i class="icon" v-if="menu.icon" :class="menu.icon"></i>
|
|
198
|
-
{{ menu.title }}
|
|
199
|
-
</span>
|
|
200
|
-
</template>
|
|
201
|
-
|
|
202
|
-
<template #action-end>
|
|
203
|
-
<div class="user-profile">User</div>
|
|
204
|
-
</template>
|
|
205
|
-
</TvMenu>
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
## Usage Examples
|
|
209
|
-
|
|
210
|
-
### Basic Navigation Menu
|
|
211
|
-
```vue
|
|
212
|
-
<script setup>
|
|
213
|
-
import { TvMenu } from '@todovue/tv-menu'
|
|
214
|
-
import { useRouter } from 'vue-router'
|
|
215
|
-
|
|
216
|
-
const router = useRouter()
|
|
217
|
-
|
|
218
|
-
const menus = [
|
|
219
|
-
{ id: 1, title: 'Home', url: '/' },
|
|
220
|
-
{ id: 2, title: 'About', url: '/about' },
|
|
221
|
-
{ id: 3, title: 'Blog', url: '/blog' },
|
|
222
|
-
{ id: 4, title: 'Contact', url: '/contact' }
|
|
223
|
-
]
|
|
224
|
-
|
|
225
|
-
function navigateToPage(menu) {
|
|
226
|
-
router.push(menu.url)
|
|
227
|
-
}
|
|
228
|
-
</script>
|
|
229
|
-
|
|
230
|
-
<template>
|
|
231
|
-
<TvMenu
|
|
232
|
-
:menus="menus"
|
|
233
|
-
placeholder="Search pages..."
|
|
234
|
-
titleButton="Go"
|
|
235
|
-
imageMenu="/logo.png"
|
|
236
|
-
@clickMenu="navigateToPage"
|
|
237
|
-
/>
|
|
238
|
-
</template>
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
### With Search Functionality
|
|
242
|
-
```vue
|
|
243
|
-
<script setup>
|
|
244
|
-
import { TvMenu } from '@todovue/tv-menu'
|
|
245
|
-
import { ref } from 'vue'
|
|
246
|
-
|
|
247
|
-
const searchResults = ref([])
|
|
248
|
-
|
|
249
|
-
function handleSearch(term) {
|
|
250
|
-
// Perform search logic
|
|
251
|
-
fetch(`/api/search?q=${term}`)
|
|
252
|
-
.then(res => res.json())
|
|
253
|
-
.then(data => searchResults.value = data)
|
|
254
|
-
}
|
|
255
|
-
</script>
|
|
256
|
-
|
|
257
|
-
<template>
|
|
258
|
-
<TvMenu
|
|
259
|
-
:menus="navigationItems"
|
|
260
|
-
placeholder="Search our site..."
|
|
261
|
-
titleButton="Search"
|
|
262
|
-
imageMenu="/brand-logo.png"
|
|
263
|
-
@searchMenu="handleSearch"
|
|
264
|
-
/>
|
|
265
|
-
</template>
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
### E-commerce Navigation
|
|
269
|
-
```vue
|
|
270
|
-
<script setup>
|
|
271
|
-
import '@todovue/tv-menu/style.css'
|
|
272
|
-
import { TvMenu } from '@todovue/tv-menu'
|
|
273
|
-
|
|
274
|
-
const categories = [
|
|
275
|
-
{ id: 1, title: 'Shop', url: '/shop' },
|
|
276
|
-
{ id: 2, title: 'New Arrivals', url: '/new' },
|
|
277
|
-
{ id: 3, title: 'Sale', url: '/sale' },
|
|
278
|
-
{ id: 4, title: 'My Account', url: '/account' }
|
|
279
|
-
]
|
|
280
|
-
|
|
281
|
-
function onLogoClick() {
|
|
282
|
-
window.location.href = '/'
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
function navigateTo(menu) {
|
|
286
|
-
window.location.href = menu.url
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
function searchProducts(query) {
|
|
290
|
-
// Product search logic
|
|
291
|
-
console.log('Searching products:', query)
|
|
292
|
-
}
|
|
293
|
-
</script>
|
|
294
|
-
|
|
295
|
-
<template>
|
|
296
|
-
<TvMenu
|
|
297
|
-
:menus="categories"
|
|
298
|
-
placeholder="Search products..."
|
|
299
|
-
titleButton="Find"
|
|
300
|
-
imageMenu="https://example.com/store-logo.png"
|
|
301
|
-
@clickImage="onLogoClick"
|
|
302
|
-
@clickMenu="navigateTo"
|
|
303
|
-
@searchMenu="searchProducts"
|
|
304
|
-
/>
|
|
305
|
-
</template>
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
## Responsive Behavior
|
|
309
|
-
- **Desktop view**: Full horizontal menu with all items visible + integrated search
|
|
310
|
-
- **Mobile view**: Hamburger icon that toggles a slide-in menu overlay
|
|
311
|
-
- **Automatic breakpoint**: Menu adapts automatically using CSS media queries
|
|
312
|
-
- **Touch-friendly**: All interactive elements are optimized for touch devices
|
|
313
|
-
|
|
314
|
-
## Customization (Styles / Theming)
|
|
315
|
-
The component uses SCSS with a modular structure. You can override styles by targeting the following CSS classes:
|
|
316
|
-
|
|
317
|
-
### Main Classes
|
|
318
|
-
- `.tv-menu-container` - Main menu wrapper
|
|
319
|
-
- `.tv-menu-image` - Logo container
|
|
320
|
-
- `.tv-menu-items` - Desktop menu items container
|
|
321
|
-
- `.tv-menu-item` - Individual menu item (desktop)
|
|
322
|
-
- `.tv-menu-icon` - Hamburger menu icon
|
|
323
|
-
- `.tv-menu-items-mobile` - Mobile menu overlay
|
|
324
|
-
- `.tv-menu-item-mobile` - Individual menu item (mobile)
|
|
325
|
-
|
|
326
|
-
### Example Custom Styling
|
|
327
|
-
```css
|
|
328
|
-
/* Custom menu colors */
|
|
329
|
-
.tv-menu-container {
|
|
330
|
-
background-color: #0f2e5b;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
.tv-menu-item {
|
|
334
|
-
color: #ffffff;
|
|
335
|
-
font-weight: 600;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
.tv-menu-item:hover {
|
|
339
|
-
color: #ff4081;
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
/* Custom logo size */
|
|
343
|
-
.tv-menu-image img {
|
|
344
|
-
width: 200px;
|
|
345
|
-
height: auto;
|
|
346
|
-
}
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
## Accessibility
|
|
350
|
-
- Semantic HTML5 elements (`<header>`, `<nav>`, `<ul>`, `<li>`)
|
|
351
|
-
- Keyboard navigation support for all interactive elements
|
|
352
|
-
- Alt text support for logo image
|
|
353
|
-
- Click events work with keyboard (Enter/Space)
|
|
354
|
-
- Mobile menu properly handles focus management
|
|
355
|
-
|
|
356
|
-
### Best Practices
|
|
357
|
-
- Always provide meaningful `alt` text via the logo image URL
|
|
358
|
-
- Ensure menu items have descriptive titles
|
|
359
|
-
- Test keyboard navigation (Tab, Enter, Escape)
|
|
360
|
-
|
|
361
|
-
## SSR Notes
|
|
362
|
-
- No direct DOM (`window` / `document`) access in core component → safe for SSR
|
|
363
|
-
- Styles are automatically injected when you import the library
|
|
364
|
-
- Works with Vite-based SSR and Nuxt 3 out of the box
|
|
365
|
-
- Mobile menu state is managed via Vue reactivity (no localStorage dependencies)
|
|
366
|
-
|
|
367
|
-
## Development
|
|
368
|
-
```bash
|
|
369
|
-
git clone https://github.com/TODOvue/tv-menu.git
|
|
370
|
-
cd tv-menu
|
|
371
|
-
npm install
|
|
372
|
-
npm run dev # run demo playground
|
|
373
|
-
npm run build # build library
|
|
374
|
-
```
|
|
375
|
-
Local demo served from Vite using `index.html` + `src/demo` examples.
|
|
376
|
-
|
|
377
|
-
## Contributing
|
|
378
|
-
PRs and issues welcome. See [CONTRIBUTING.md](./CONTRIBUTING.md) and [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).
|
|
379
|
-
|
|
380
|
-
Please ensure:
|
|
381
|
-
- Code follows existing style conventions
|
|
382
|
-
- Tests pass (when available)
|
|
383
|
-
- Documentation is updated for new features
|
|
384
|
-
|
|
385
|
-
## License
|
|
386
|
-
MIT © TODOvue
|
|
387
|
-
|
|
388
|
-
### Attributions
|
|
389
|
-
Crafted for the TODOvue component ecosystem
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to `@todovue/tv-modal` will be documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
## [1.2.1] - 2026-01-27
|
|
9
|
-
|
|
10
|
-
### Changed
|
|
11
|
-
- Simplified the file list in `package.json` to include only essential assets.
|
|
12
|
-
- Simplified the build configuration by removing demo-specific logic.
|
|
13
|
-
- Enhanced GitHub Actions workflows to automate npm package publishing and GitHub release creation.
|
|
14
|
-
- Moved the `@todovue/tv-demo` component import from main.js to `Demo.vue` to localize its usage.
|
|
15
|
-
- Updated build commands to include `README.md` and `CHANGELOG.md` files in the public directory during the build process.
|
|
16
|
-
|
|
17
|
-
### Added
|
|
18
|
-
- Included the `src` directory in the `package.json` files list to ensure component source files are bundled in the package distribution.
|
|
19
|
-
|
|
20
|
-
### Removed
|
|
21
|
-
- Eliminated the global import of the `@todovue/tv-demo` component from `main.js`.
|
|
22
|
-
|
|
23
|
-
### Dependencies
|
|
24
|
-
- Updated `@todovue/tv-demo` to `^1.4.11`.
|
|
25
|
-
- Updated `@todovue/tv-button` to `^1.2.5`.
|
|
26
|
-
- Updated `vue` to `^3.5.27`.
|
|
27
|
-
- Updated `sass` to `^1.97.3`.
|
|
28
|
-
|
|
29
|
-
## [1.2.0] - 2026-01-20
|
|
30
|
-
|
|
31
|
-
### Added
|
|
32
|
-
- Enhanced the Modal component with dedicated slot support for headers and footers, allowing for greater customization of layout and content.
|
|
33
|
-
- Enhanced button variant support to include specific styles for confirm and cancel actions, improving visual clarity for user decision-making.
|
|
34
|
-
- Introduced the `closeOnBackdrop` property to provide control over whether the modal closes when the backdrop is clicked.
|
|
35
|
-
|
|
36
|
-
### Changed
|
|
37
|
-
- Replaced background images in modal alerts with SVG icons to improve scaling, performance, and color customization.
|
|
38
|
-
|
|
39
|
-
### Dependencies
|
|
40
|
-
- Updated the `@todovue/tv-demo` dependency to `^1.4.4`.
|
|
41
|
-
- Updated the `@todovue/tv-button` dependency to `^1.2.4`.
|
|
42
|
-
- Updated the `sass` dependency to `^1.97.2`.
|
|
43
|
-
- Updated the `vite` dependency to `^7.3.1`.
|
|
44
|
-
|
|
45
|
-
## [1.1.2] - 2025-12-24
|
|
46
|
-
|
|
47
|
-
### Added
|
|
48
|
-
- Added automatic publishing to the TODOvue cPanel in `release.yml` for each release, simplifying package distribution and updates.
|
|
49
|
-
- Added `package-lock.json` to the repository to ensure dependency consistency and facilitate version management across development and production environments.
|
|
50
|
-
|
|
51
|
-
### Changed
|
|
52
|
-
- Changed the `base` option in `vite.config.js` for website deployment in cpanel.
|
|
53
|
-
|
|
54
|
-
### Fixed
|
|
55
|
-
- Fixed repository URL in `package.json` to point to the correct GitHub repository.
|
|
56
|
-
- Fixed the token configuration used to generate the package in the GitHub Actions workflow `release.yml`.
|
|
57
|
-
|
|
58
|
-
### Dependencies
|
|
59
|
-
- Updated dependency versions in `package.json` to maintain compatibility and benefit from improvements and bug fixes in the used libraries.
|
|
60
|
-
|
|
61
|
-
## [1.1.1] - 2025-11-24
|
|
62
|
-
|
|
63
|
-
### Changed
|
|
64
|
-
- Updated background and text colors for dark and light themes to improve readability and visual comfort.
|
|
65
|
-
- Deleted unused styles files.
|
|
66
|
-
|
|
67
|
-
### Dependencies
|
|
68
|
-
- Updated the `@todovue/tv-demo` dependency to `^1.2.2` to ensure compatibility with the latest changes.
|
|
69
|
-
|
|
70
|
-
## [1.1.0] - 2025-11-21
|
|
71
|
-
|
|
72
|
-
### Added
|
|
73
|
-
- Added `nux.js` configuration file for Nuxt 4 integration.
|
|
74
|
-
- Added `tsconfig.json` for proper type checking during build.
|
|
75
|
-
- Create `global.d.ts` to declare module for TypeScript users.
|
|
76
|
-
- Added Nuxt module for automatic style injection and auto-registration of the `TvModal` component.
|
|
77
|
-
- The `@todovue/tv-modal` component is now externalized from the final build, reducing bundle size.
|
|
78
|
-
- Added `CHANGELOG.md` in script to generate demo and documentation site.
|
|
79
|
-
|
|
80
|
-
### Dependencies
|
|
81
|
-
- Updated the `@todovue/tv-demo` dependency to `^1.2.1` to ensure compatibility with the latest changes.
|
|
82
|
-
- Updated the `@todovue/tv-button` dependency to `^1.2.2` to ensure compatibility with the latest changes.
|
|
83
|
-
|
|
84
|
-
## [1.0.1] - 2025-11-15
|
|
85
|
-
|
|
86
|
-
### Changed
|
|
87
|
-
- Styles are now served as a separate CSS file (`dist/tv-modal.css`) generated by Vite during the build process.
|
|
88
|
-
- Users must now explicitly import the stylesheet in their application:
|
|
89
|
-
- For Vue/Vite SPA: `import '@todovue/tv-modal/style.css'` in `main.ts`
|
|
90
|
-
- For Nuxt 3/4: Add `'@todovue/tv-modal/style.css'` to the `css` array in `nuxt.config.ts`
|
|
91
|
-
|
|
92
|
-
### Added
|
|
93
|
-
- Added `sideEffects` field to `package.json` to support proper tree-shaking with CSS files.
|
|
94
|
-
- Added `./style.css` export path in `package.json` for explicit CSS imports.
|
|
95
|
-
- Improved SSR/SSG compatibility, especially for Nuxt 3/4 applications.
|
|
96
|
-
|
|
97
|
-
### Dependencies
|
|
98
|
-
- Removed dependency on `vite-plugin-css-injected-by-js` from `devDependencies`.
|
|
99
|
-
|
|
100
|
-
## [1.0.0] - 2025-10-20
|
|
101
|
-
|
|
102
|
-
### Added
|
|
103
|
-
- Initial release of TvModal component
|
|
104
|
-
- Multiple modal variants: success, error, warning, and info icons
|
|
105
|
-
- Configurable modal with `configModal` prop accepting title, description, and button texts
|
|
106
|
-
- Theme support with automatic detection of dark-mode and light-mode
|
|
107
|
-
- Manual theme override via `theme` prop
|
|
108
|
-
- Built-in animations: scale-up on open, scale-down on close, and rotate shake on overlay click
|
|
109
|
-
- Vue Teleport integration for proper modal rendering at body level
|
|
110
|
-
- Keyboard navigation support (ESC key to close/cancel)
|
|
111
|
-
- Focus management: automatically focuses modal on open and restores focus on close
|
|
112
|
-
- Custom events: `accepted` and `canceled` for user actions
|
|
113
|
-
- Accessibility features: ARIA attributes (role="dialog", aria-modal, aria-labelledby, aria-describedby)
|
|
114
|
-
- Integration with @todovue/tv-button for action buttons
|
|
115
|
-
- SSR compatibility (Nuxt 3 ready)
|
|
116
|
-
- Composable `useModal` for modal state and behavior management
|
|
117
|
-
- Dynamic theme detection with MutationObserver for real-time updates
|
|
118
|
-
- Customizable confirm and cancel buttons with conditional rendering
|
|
119
|
-
- Flexible modal configuration with validation
|
|
120
|
-
|
|
121
|
-
[1.2.1]: https://github.com/TODOvue/tv-modal/pull/7/files
|
|
122
|
-
[1.2.0]: https://github.com/TODOvue/tv-modal/pull/6/files
|
|
123
|
-
[1.1.2]: https://github.com/TODOvue/tv-modal/pull/5/files
|
|
124
|
-
[1.1.1]: https://github.com/TODOvue/tv-modal/pull/4/files
|
|
125
|
-
[1.1.0]: https://github.com/TODOvue/tv-modal/pull/3/files
|
|
126
|
-
[1.0.1]: https://github.com/TODOvue/tv-modal/pull/2/files
|
|
127
|
-
[1.0.0]: https://github.com/TODOvue/tv-modal/pull/1/files
|