@todovue/tv-ui 0.1.0 → 0.1.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/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 +1 -1
- 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,314 +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 Settings (TvSettings)
|
|
5
|
-
A flexible Vue 3 component with no framework dependencies for creating sliding settings panels from any direction. Perfect for settings, side menus, or any content that needs to slide out from screen edges. Compatible with SPA applications and server-side rendering (SSR) environments like Nuxt 3.
|
|
6
|
-
|
|
7
|
-
[](https://www.npmjs.com/package/@todovue/tv-settings)
|
|
8
|
-
[](https://www.npmjs.com/package/@todovue/tv-settings)
|
|
9
|
-
[](https://www.npmjs.com/package/@todovue/tv-settings)
|
|
10
|
-

|
|
11
|
-

|
|
12
|
-

|
|
13
|
-

|
|
14
|
-

|
|
15
|
-

|
|
16
|
-
|
|
17
|
-
> Demo: https://ui.todovue.blog/settings
|
|
18
|
-
|
|
19
|
-
## Table of Contents
|
|
20
|
-
- [Features](#features)
|
|
21
|
-
- [Installation](#installation)
|
|
22
|
-
- [Quick Start (SPA)](#quick-start-spa)
|
|
23
|
-
- [Usage in Nuxt 4 / SSR](#usage-in-nuxt-4--ssr)
|
|
24
|
-
- [Component Registration Options](#component-registration-options)
|
|
25
|
-
- [Props](#props)
|
|
26
|
-
- [Events](#events)
|
|
27
|
-
- [Slots](#slots)
|
|
28
|
-
- [Directions](#directions)
|
|
29
|
-
- [State Control](#state-control)
|
|
30
|
-
- [Customization (Styles / Themes)](#customization-styles--themes)
|
|
31
|
-
- [Accessibility](#accessibility)
|
|
32
|
-
- [SSR Notes](#ssr-notes)
|
|
33
|
-
- [Development](#development)
|
|
34
|
-
- [Contributing](#contributing)
|
|
35
|
-
- [License](#license)
|
|
36
|
-
|
|
37
|
-
## Features
|
|
38
|
-
- Sliding panels from 4 directions: top, right, bottom, left
|
|
39
|
-
- Bidirectional v-model control (controlled mode) or internal state
|
|
40
|
-
- Automatic close on outside click (configurable)
|
|
41
|
-
- Close with Escape key
|
|
42
|
-
- Customizable slots (header and main content)
|
|
43
|
-
- Built-in gear SVG icon
|
|
44
|
-
- Disabled state
|
|
45
|
-
- Smooth transitions
|
|
46
|
-
- Compatible with SPA and SSR (Nuxt 3)
|
|
47
|
-
- Tree-shake friendly (Vue marked as external in build)
|
|
48
|
-
- TypeScript declarations included
|
|
49
|
-
|
|
50
|
-
## Installation
|
|
51
|
-
Using npm:
|
|
52
|
-
```bash
|
|
53
|
-
npm install @todovue/tv-settings
|
|
54
|
-
```
|
|
55
|
-
Using yarn:
|
|
56
|
-
```bash
|
|
57
|
-
yarn add @todovue/tv-settings
|
|
58
|
-
```
|
|
59
|
-
Using pnpm:
|
|
60
|
-
```bash
|
|
61
|
-
pnpm add @todovue/tv-settings
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
## Quick Start (SPA)
|
|
65
|
-
Global registration (main.js / main.ts):
|
|
66
|
-
```js
|
|
67
|
-
import { createApp } from 'vue'
|
|
68
|
-
import App from './App.vue'
|
|
69
|
-
import TvSettings from '@todovue/tv-settings'
|
|
70
|
-
|
|
71
|
-
createApp(App)
|
|
72
|
-
.use(TvSettings) // enables <TvSettings /> globally
|
|
73
|
-
.mount('#app')
|
|
74
|
-
```
|
|
75
|
-
Local import inside a component:
|
|
76
|
-
```vue
|
|
77
|
-
<script setup>
|
|
78
|
-
import { TvSettings } from '@todovue/tv-settings'
|
|
79
|
-
import '@todovue/tv-settings/style.css'
|
|
80
|
-
</script>
|
|
81
|
-
|
|
82
|
-
<template>
|
|
83
|
-
<TvSettings direction="right">
|
|
84
|
-
<template #header>
|
|
85
|
-
<h2>Settings</h2>
|
|
86
|
-
</template>
|
|
87
|
-
<template #default="{ close }">
|
|
88
|
-
<p>Custom content</p>
|
|
89
|
-
<button @click="close">Close</button>
|
|
90
|
-
</template>
|
|
91
|
-
</TvSettings>
|
|
92
|
-
</template>
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
## Usage in Nuxt 4 / SSR
|
|
96
|
-
```ts
|
|
97
|
-
// nuxt.config.ts
|
|
98
|
-
export default defineNuxtConfig({
|
|
99
|
-
modules: [
|
|
100
|
-
'@todovue/tv-button/nuxt'
|
|
101
|
-
]
|
|
102
|
-
})
|
|
103
|
-
```
|
|
104
|
-
Use anywhere:
|
|
105
|
-
```vue
|
|
106
|
-
<TvSettings direction="left">
|
|
107
|
-
<template #default="{ direction }">
|
|
108
|
-
<p>Panel from {{ direction }}</p>
|
|
109
|
-
</template>
|
|
110
|
-
</TvSettings>
|
|
111
|
-
```
|
|
112
|
-
Optional direct import (without plugin):
|
|
113
|
-
```vue
|
|
114
|
-
<script setup>
|
|
115
|
-
import { TvSettings } from '@todovue/tv-settings'
|
|
116
|
-
import '@todovue/tv-settings/style.css'
|
|
117
|
-
</script>
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## Component Registration Options
|
|
121
|
-
| Approach | When to use |
|
|
122
|
-
|-----------------------------------------------------------------------|----------------------------------------------|
|
|
123
|
-
| Global via `app.use(TvSettings)` | Multiple uses across the app / design system |
|
|
124
|
-
| Named local import `{ TvSettings }` | Isolated contexts / code-split |
|
|
125
|
-
| Default direct import `import TvSettings from '@todovue/tv-settings'` | Single use or manual registration |
|
|
126
|
-
|
|
127
|
-
## Props
|
|
128
|
-
| Prop | Type | Default | Description |
|
|
129
|
-
|----------------|---------|-----------------|-------------------------------------------------------------------------|
|
|
130
|
-
| modelValue | Boolean | undefined | Bidirectional v-model control. If `undefined`, uses internal state. |
|
|
131
|
-
| direction | String | 'right' | Direction from which the panel slides: 'top', 'right', 'bottom', 'left' |
|
|
132
|
-
| disabled | Boolean | false | Disables the open button. |
|
|
133
|
-
| closeOnOutside | Boolean | true | If `true`, the panel closes when clicking outside. |
|
|
134
|
-
| label | String | 'Open settings' | ARIA label for the gear button (accessibility). |
|
|
135
|
-
| title | String | null | Optional title to display in the header. |
|
|
136
|
-
|
|
137
|
-
## Events
|
|
138
|
-
| Event (kebab) | Emit (camel) | Description |
|
|
139
|
-
|---------------------|---------------------|-----------------------------------------|
|
|
140
|
-
| `update:modelValue` | `update:modelValue` | Emitted when open/closed state changes. |
|
|
141
|
-
| `open` | `open` | Emitted when the panel opens. |
|
|
142
|
-
| `close` | `close` | Emitted when the panel closes. |
|
|
143
|
-
|
|
144
|
-
Usage:
|
|
145
|
-
```vue
|
|
146
|
-
<TvSettings
|
|
147
|
-
v-model="isOpen"
|
|
148
|
-
@open="handleOpen"
|
|
149
|
-
@close="handleClose"
|
|
150
|
-
/>
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
## Slots
|
|
154
|
-
| Slot | Bindings | Description |
|
|
155
|
-
|---------|----------------------------------------------|--------------------------------------------|
|
|
156
|
-
| trigger | `{ isOpen, toggle, open, close }` | Replace the default gear button. |
|
|
157
|
-
| header | — | Panel header content (optional). |
|
|
158
|
-
| default | `{ direction, close, open }` | Main panel content with access to methods. |
|
|
159
|
-
|
|
160
|
-
### Slot Examples
|
|
161
|
-
Header slot:
|
|
162
|
-
```vue
|
|
163
|
-
<TvSettings>
|
|
164
|
-
<template #header>
|
|
165
|
-
<h2>My Settings</h2>
|
|
166
|
-
</template>
|
|
167
|
-
</TvSettings>
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
Default slot with methods:
|
|
171
|
-
```vue
|
|
172
|
-
<TvSettings>
|
|
173
|
-
<template #default="{ direction, close }">
|
|
174
|
-
<p>Panel from: {{ direction }}</p>
|
|
175
|
-
<button @click="close">Close</button>
|
|
176
|
-
</template>
|
|
177
|
-
</TvSettings>
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
Trigger slot:
|
|
181
|
-
```vue
|
|
182
|
-
<TvSettings>
|
|
183
|
-
<template #trigger="{ toggle }">
|
|
184
|
-
<button @click="toggle">My Custom Button</button>
|
|
185
|
-
</template>
|
|
186
|
-
<template #default>
|
|
187
|
-
<p>Content</p>
|
|
188
|
-
</template>
|
|
189
|
-
</TvSettings>
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
## Directions
|
|
193
|
-
The component supports 4 directions:
|
|
194
|
-
- `top` - Panel slides from top
|
|
195
|
-
- `right` - Panel slides from right (default)
|
|
196
|
-
- `bottom` - Panel slides from bottom
|
|
197
|
-
- `left` - Panel slides from left
|
|
198
|
-
|
|
199
|
-
Examples:
|
|
200
|
-
```vue
|
|
201
|
-
<TvSettings direction="top" />
|
|
202
|
-
<TvSettings direction="right" />
|
|
203
|
-
<TvSettings direction="bottom" />
|
|
204
|
-
<TvSettings direction="left" />
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
If an invalid direction is provided, the component will show a console warning and use `'right'` as default.
|
|
208
|
-
|
|
209
|
-
## State Control
|
|
210
|
-
### Uncontrolled Mode (Internal State)
|
|
211
|
-
By default, the component manages its own state:
|
|
212
|
-
```vue
|
|
213
|
-
<TvSettings direction="left">
|
|
214
|
-
<p>Panel content</p>
|
|
215
|
-
</TvSettings>
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
### Controlled Mode (v-model)
|
|
219
|
-
Control state externally:
|
|
220
|
-
```vue
|
|
221
|
-
<script setup>
|
|
222
|
-
import { ref } from 'vue'
|
|
223
|
-
const isOpen = ref(false)
|
|
224
|
-
</script>
|
|
225
|
-
|
|
226
|
-
<template>
|
|
227
|
-
<button @click="isOpen = !isOpen">Toggle Settings</button>
|
|
228
|
-
<TvSettings v-model="isOpen" direction="right">
|
|
229
|
-
<p>Controlled panel</p>
|
|
230
|
-
</TvSettings>
|
|
231
|
-
</template>
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
### Disable Close on Outside Click
|
|
235
|
-
```vue
|
|
236
|
-
<TvSettings :close-on-outside="false" direction="left">
|
|
237
|
-
<template #default="{ close }">
|
|
238
|
-
<p>Only closes with button or ESC</p>
|
|
239
|
-
<button @click="close">Close</button>
|
|
240
|
-
</template>
|
|
241
|
-
</TvSettings>
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
## Customization (Styles / Themes)
|
|
245
|
-
The component uses CSS with BEM classes. You can override styles:
|
|
246
|
-
|
|
247
|
-
```css
|
|
248
|
-
/* Customize gear button */
|
|
249
|
-
.tv-setting__gear {
|
|
250
|
-
background-color: #your-color;
|
|
251
|
-
color: #your-icon-color;
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
/* Customize panel */
|
|
255
|
-
.tv-setting__panel {
|
|
256
|
-
background-color: #your-panel-bg;
|
|
257
|
-
box-shadow: 0 4px 20px rgba(0,0,0,0.3);
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
/* Customize by direction */
|
|
261
|
-
.tv-setting--top .tv-setting__panel {
|
|
262
|
-
/* specific styles for top panel */
|
|
263
|
-
}
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
Inline styles:
|
|
267
|
-
```vue
|
|
268
|
-
<TvSettings
|
|
269
|
-
direction="right"
|
|
270
|
-
style="--panel-bg: #f0f0f0; --panel-width: 350px;"
|
|
271
|
-
>
|
|
272
|
-
<p>Custom panel</p>
|
|
273
|
-
</TvSettings>
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
## Accessibility
|
|
277
|
-
- The gear button includes `aria-label`, `aria-pressed` and `aria-expanded`.
|
|
278
|
-
- You can customize the aria-label text with the `label` prop.
|
|
279
|
-
- The panel has `role="dialog"`.
|
|
280
|
-
- Supports close with Escape key.
|
|
281
|
-
- Proper focus management for screen readers.
|
|
282
|
-
|
|
283
|
-
Example:
|
|
284
|
-
```vue
|
|
285
|
-
<TvSettings label="Open settings panel" direction="right">
|
|
286
|
-
<p>Accessible content</p>
|
|
287
|
-
</TvSettings>
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
## SSR Notes
|
|
291
|
-
- No direct DOM access (`window` / `document`) in source code → SSR-safe.
|
|
292
|
-
- Styles are automatically applied when importing the library.
|
|
293
|
-
- Make sure to import `@todovue/tv-settings/style.css` in an SSR-compatible entry point (plugin or layout).
|
|
294
|
-
- Event listeners (outside click, keydown) are registered in `onMounted` to avoid SSR errors.
|
|
295
|
-
|
|
296
|
-
## Development
|
|
297
|
-
```bash
|
|
298
|
-
git clone https://github.com/TODOvue/tv-settings.git
|
|
299
|
-
cd tv-settings
|
|
300
|
-
npm install
|
|
301
|
-
npm run dev # run demo playground
|
|
302
|
-
npm run build # build library
|
|
303
|
-
```
|
|
304
|
-
Local demo is served from Vite using `index.html` + examples in `src/demo`.
|
|
305
|
-
|
|
306
|
-
## Contributing
|
|
307
|
-
PRs and issues are welcome. See [CONTRIBUTING.md](./CONTRIBUTING.md) and [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).
|
|
308
|
-
|
|
309
|
-
## License
|
|
310
|
-
MIT © TODOvue
|
|
311
|
-
|
|
312
|
-
### Attributions
|
|
313
|
-
Developed for the TODOvue component ecosystem
|
|
314
|
-
|
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project 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
|
-
## [2.2.2] - 2026-01-27
|
|
9
|
-
|
|
10
|
-
### Fixed
|
|
11
|
-
- Remove base path configuration for demo environment.
|
|
12
|
-
|
|
13
|
-
## [2.2.1] - 2026-01-27
|
|
14
|
-
|
|
15
|
-
### Changed
|
|
16
|
-
- Simplified the file list in `package.json` to include only essential assets.
|
|
17
|
-
- Simplified the build configuration by removing demo-specific logic.
|
|
18
|
-
- Enhanced GitHub Actions workflows to automate npm package publishing and GitHub release creation.
|
|
19
|
-
- Moved the `@todovue/tv-demo` component import from main.js to `Demo.vue` to localize its usage.
|
|
20
|
-
- Updated build commands to include `README.md` and `CHANGELOG.md` files in the public directory during the build process.
|
|
21
|
-
|
|
22
|
-
### Added
|
|
23
|
-
- Included the `src` directory in the `package.json` files list to ensure component source files are bundled in the package distribution.
|
|
24
|
-
|
|
25
|
-
### Removed
|
|
26
|
-
- Eliminated the global import of the `@todovue/tv-demo` component from `main.js`.
|
|
27
|
-
|
|
28
|
-
### Dependencies
|
|
29
|
-
- Updated `@todovue/tv-demo` to `^1.4.11`.
|
|
30
|
-
- Updated `@todovue/tv-label` to `^1.2.3`.
|
|
31
|
-
- Updated `vue` to `^3.5.27`.
|
|
32
|
-
- Updated `sass` to `^1.97.3`.
|
|
33
|
-
|
|
34
|
-
## [2.2.0] - 2026-01-20
|
|
35
|
-
|
|
36
|
-
### Added
|
|
37
|
-
- Added `isOutline` and `size` props to `TvSidebar` to control `TvLabel` appearance.
|
|
38
|
-
- Added `searchable` prop to enable real-time search/filter functionality across all display modes (list, labels, image).
|
|
39
|
-
- Added `searchPlaceholder` prop to customize the search input placeholder text.
|
|
40
|
-
- Added `@search` event that emits the current search query whenever it changes.
|
|
41
|
-
- Added text highlighting for search matches in list and label modes using `<mark>` tags.
|
|
42
|
-
- Added search input UI with responsive styling for both dark and light modes.
|
|
43
|
-
- Added two new demo variants showcasing searchable list and searchable labels functionality.
|
|
44
|
-
- Added `grouped` prop to enable hierarchical organization of content with collapsible sections.
|
|
45
|
-
- Added support for grouped/categorized mode with collapsible group headers and item counters.
|
|
46
|
-
- Added smooth animations for expanding/collapsing groups.
|
|
47
|
-
- Added search/filter functionality within grouped mode that filters across all groups.
|
|
48
|
-
- Added three new demo variants showcasing grouped mode: basic, with search, and with limit.
|
|
49
|
-
- Added grouped mode data structure documentation and usage examples.
|
|
50
|
-
- Added `newLabelText` prop and `isNew` item property to show a customizable "New" badge on sidebar items.
|
|
51
|
-
|
|
52
|
-
### Dependencies
|
|
53
|
-
- Updated the `@todovue/tv-demo` dependency to `^1.4.4`.
|
|
54
|
-
- Updated the `@todovue/tv-label` dependency to `^1.2.1`.
|
|
55
|
-
- Updated the `sass` dependency to `^1.97.2`.
|
|
56
|
-
- Updated the `vite` dependency to `^7.3.1`.
|
|
57
|
-
|
|
58
|
-
### Changed
|
|
59
|
-
- Refined component styling by adding consistent padding for better spacing.
|
|
60
|
-
- Enhanced hover effects to provide clearer visual feedback during user interaction.
|
|
61
|
-
|
|
62
|
-
### Removed
|
|
63
|
-
- Eliminated the unused `clickLabel` event emission to clean up the component API and improve internal efficiency.
|
|
64
|
-
|
|
65
|
-
## [2.1.2] - 2025-12-27
|
|
66
|
-
|
|
67
|
-
### Added
|
|
68
|
-
- Added automatic publishing to the TODOvue cPanel in `release.yml` for each release, simplifying package distribution and updates.
|
|
69
|
-
- Added `package-lock.json` to the repository to ensure dependency consistency and facilitate version management across development and production environments.
|
|
70
|
-
|
|
71
|
-
### Changed
|
|
72
|
-
- Changed the `base` option in `vite.config.js` for website deployment in cpanel.
|
|
73
|
-
|
|
74
|
-
### Fixed
|
|
75
|
-
- Fixed repository URL in `package.json` to point to the correct GitHub repository.
|
|
76
|
-
- Fixed the token configuration used to generate the package in the GitHub Actions workflow `release.yml`.
|
|
77
|
-
|
|
78
|
-
### Dependencies
|
|
79
|
-
- Updated dependency versions in `package.json` to maintain compatibility and benefit from improvements and bug fixes in the used libraries.
|
|
80
|
-
|
|
81
|
-
## [2.1.1] - 2025-11-24
|
|
82
|
-
|
|
83
|
-
### Changed
|
|
84
|
-
- Updated background and text colors for dark and light themes to improve readability and visual comfort.
|
|
85
|
-
|
|
86
|
-
### Dependencies
|
|
87
|
-
- Updated the `@todovue/tv-demo` dependency to `^1.2.2` to ensure compatibility with the latest changes.
|
|
88
|
-
|
|
89
|
-
### [2.1.0] - 2025-11-21
|
|
90
|
-
|
|
91
|
-
### Added
|
|
92
|
-
- Added `nux.js` configuration file for Nuxt 4 integration.
|
|
93
|
-
- Added `tsconfig.json` for proper type checking during build.
|
|
94
|
-
- Create `global.d.ts` to declare module for TypeScript users.
|
|
95
|
-
- Added Nuxt module for automatic style injection and auto-registration of the `TvSidebar` component.
|
|
96
|
-
- The `@todovue/tv-sidebar` component is now externalized from the final build, reducing bundle size.
|
|
97
|
-
- Added `CHANGELOG.md` in script to generate demo and documentation site.
|
|
98
|
-
|
|
99
|
-
### Dependencies
|
|
100
|
-
- Updated the `@todovue/tv-demo` dependency to `^1.2.1` to ensure compatibility with the latest changes.
|
|
101
|
-
- Updated the `@todovue/tv-label` dependency to `^1.1.1` to ensure compatibility with the latest changes.
|
|
102
|
-
|
|
103
|
-
## [2.0.2] - 2025-11-15
|
|
104
|
-
|
|
105
|
-
### Changed
|
|
106
|
-
- Styles are now served as a separate CSS file (`dist/tv-sidebar.css`) generated by Vite during the build process.
|
|
107
|
-
- Users must now explicitly import the stylesheet in their application:
|
|
108
|
-
- For Vue/Vite SPA: `import '@todovue/tv-sidebar/style.css'` in `main.ts`
|
|
109
|
-
- For Nuxt 3/4: Add `'@todovue/tv-sidebar/style.css'` to the `css` array in `nuxt.config.ts`
|
|
110
|
-
|
|
111
|
-
### Added
|
|
112
|
-
- Added `sideEffects` field to `package.json` to support proper tree-shaking with CSS files.
|
|
113
|
-
- Added `./style.css` export path in `package.json` for explicit CSS imports.
|
|
114
|
-
- Improved SSR/SSG compatibility, especially for Nuxt 3/4 applications.
|
|
115
|
-
|
|
116
|
-
### Dependencies
|
|
117
|
-
- Removed dependency on `vite-plugin-css-injected-by-js` from `devDependencies`
|
|
118
|
-
|
|
119
|
-
## [2.0.1] - 2025-11-13
|
|
120
|
-
|
|
121
|
-
### Fixed
|
|
122
|
-
- Fixed list item styles and separator line appearance
|
|
123
|
-
|
|
124
|
-
## [2.0.0] - 2025-11-13
|
|
125
|
-
|
|
126
|
-
### Changed
|
|
127
|
-
- **BREAKING**: Removed navigation functionality - component no longer uses router links
|
|
128
|
-
- **BREAKING**: Removed `linkTag` prop - component now always emits events instead of navigating
|
|
129
|
-
- List items now use `<span>` elements with click handlers instead of router components
|
|
130
|
-
- All interactive elements (text items, labels, and images) now emit `click` event with the complete data object
|
|
131
|
-
- Image mode now always emits click event with image object when clicked
|
|
132
|
-
|
|
133
|
-
### Added
|
|
134
|
-
- `clickItem` method in `useSidebar` composable to handle text item clicks
|
|
135
|
-
- `clickImage` method in `useSidebar` composable to handle image clicks
|
|
136
|
-
- Enhanced event emission: all item types (text, labels, images) now consistently emit the full object on click
|
|
137
|
-
|
|
138
|
-
### Removed
|
|
139
|
-
- `linkTag` prop (no longer needed without navigation)
|
|
140
|
-
- `clickable` prop (no longer needed as all items are clickable by default)
|
|
141
|
-
- `linkComponent` computed property from `useSidebar` composable
|
|
142
|
-
- Router/Nuxt link dependencies
|
|
143
|
-
|
|
144
|
-
### Fixed
|
|
145
|
-
- Maintained original styling for text items after changing from router links to span elements
|
|
146
|
-
- Proper color application for both dark and light modes
|
|
147
|
-
- Consistent hover states and cursor pointers for all clickable elements
|
|
148
|
-
|
|
149
|
-
## [1.0.0] - 2025-01-19
|
|
150
|
-
|
|
151
|
-
### Added
|
|
152
|
-
- Initial release of `@todovue/tv-sidebar` component
|
|
153
|
-
- Three display modes:
|
|
154
|
-
- **Default List Mode**: Numbered list with links
|
|
155
|
-
- **Categories/Labels Mode**: Colored category labels with click events
|
|
156
|
-
- **Image Mode**: Display images with optional clickable links
|
|
157
|
-
- Core props:
|
|
158
|
-
- `data` - Main data object for sidebar content
|
|
159
|
-
- `linkTag` - Support for both `router-link` (Vue Router) and `nuxt-link` (Nuxt)
|
|
160
|
-
- `isImage` - Enable image display mode
|
|
161
|
-
- `isLabel` - Enable categories/labels display mode
|
|
162
|
-
- `limit` - Control maximum number of items displayed
|
|
163
|
-
- `clickable` - Make images clickable in image mode
|
|
164
|
-
- Events:
|
|
165
|
-
- `clickLabel` - Emitted when a label/category is clicked
|
|
166
|
-
- `click` - Native click passthrough
|
|
167
|
-
- `useSidebar` composable for component logic:
|
|
168
|
-
- Dynamic link component resolution
|
|
169
|
-
- List limiting functionality
|
|
170
|
-
- Label click handling
|
|
171
|
-
- SCSS styling with:
|
|
172
|
-
- Clean, minimal design
|
|
173
|
-
- Responsive layout
|
|
174
|
-
- Title with separator line
|
|
175
|
-
- Hover effects on links
|
|
176
|
-
- Proper spacing and typography
|
|
177
|
-
- SSR compatibility (Nuxt 3 ready)
|
|
178
|
-
- Tree-shakeable build with Vue as external dependency
|
|
179
|
-
- TypeScript support with type definitions
|
|
180
|
-
- Integration with `@todovue/tv-label` for category display
|
|
181
|
-
- Demo playground with multiple examples:
|
|
182
|
-
- Default list view
|
|
183
|
-
- Default with item limit
|
|
184
|
-
- Categories view
|
|
185
|
-
- Categories with limit
|
|
186
|
-
- Image view
|
|
187
|
-
- Clickable image view
|
|
188
|
-
- Comprehensive documentation:
|
|
189
|
-
- Installation guides for npm, yarn, and pnpm
|
|
190
|
-
- Quick start for SPA and Nuxt 3/SSR
|
|
191
|
-
- Component registration options
|
|
192
|
-
- Props and events documentation
|
|
193
|
-
- Usage examples for all modes
|
|
194
|
-
- Data structure specifications
|
|
195
|
-
- Styling and customization guide
|
|
196
|
-
- Router integration guide
|
|
197
|
-
- Accessibility notes
|
|
198
|
-
|
|
199
|
-
### Features
|
|
200
|
-
- Framework-agnostic sidebar component for Vue 3
|
|
201
|
-
- Multiple layout options for different content types
|
|
202
|
-
- Flexible routing system compatible with Vue Router and Nuxt
|
|
203
|
-
- Responsive and accessible design
|
|
204
|
-
- Zero DOM assumptions (SSR-safe)
|
|
205
|
-
- No direct `window` or `document` access
|
|
206
|
-
- Auto-imported styles when using the component
|
|
207
|
-
- Semantic HTML structure
|
|
208
|
-
- Keyboard navigation support
|
|
209
|
-
- ARIA-compliant markup
|
|
210
|
-
|
|
211
|
-
### Technical Details
|
|
212
|
-
- Built with Vite
|
|
213
|
-
- SCSS for styling with modular architecture
|
|
214
|
-
- Composition API with composables
|
|
215
|
-
- TypeScript entry point
|
|
216
|
-
- ES Module and CommonJS builds
|
|
217
|
-
- Minimal bundle size with external Vue dependency
|
|
218
|
-
- Node.js >= 20.19.0 required
|
|
219
|
-
|
|
220
|
-
[2.2.2]: https://github.com/TODOvue/tv-sidebar/pull/11/files
|
|
221
|
-
[2.2.1]: https://github.com/TODOvue/tv-sidebar/pull/10/files
|
|
222
|
-
[2.2.0]: https://github.com/TODOvue/tv-sidebar/pull/9/files
|
|
223
|
-
[2.1.2]: https://github.com/TODOvue/tv-sidebar/pull/8/files
|
|
224
|
-
[2.1.1]: https://github.com/TODOvue/tv-sidebar/pull/7/files
|
|
225
|
-
[2.1.0]: https://github.com/TODOvue/tv-sidebar/pull/6/files
|
|
226
|
-
[2.0.2]: https://github.com/TODOvue/tv-sidebar/pull/4/files
|
|
227
|
-
[2.0.1]: https://github.com/TODOvue/tv-sidebar/pull/3/files
|
|
228
|
-
[2.0.0]: https://github.com/TODOvue/tv-sidebar/pull/2/files
|
|
229
|
-
[1.0.0]: https://github.com/TODOvue/tv-sidebar/pull/1/files
|