@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.
Files changed (48) hide show
  1. package/README.md +20 -20
  2. package/dist/entry.d.ts +2 -2
  3. package/dist/tv-ui.cjs.js +1 -1
  4. package/dist/tv-ui.css +1 -1
  5. package/dist/tv-ui.es.js +50 -49
  6. package/package.json +4 -2
  7. package/dist/.htaccess +0 -8
  8. package/dist/demos/tv-alert/CHANGELOG.md +0 -127
  9. package/dist/demos/tv-alert/README.md +0 -334
  10. package/dist/demos/tv-article/CHANGELOG.md +0 -221
  11. package/dist/demos/tv-article/README.md +0 -258
  12. package/dist/demos/tv-breadcrumbs/CHANGELOG.md +0 -135
  13. package/dist/demos/tv-breadcrumbs/README.md +0 -364
  14. package/dist/demos/tv-button/CHANGELOG.md +0 -158
  15. package/dist/demos/tv-button/README.md +0 -255
  16. package/dist/demos/tv-card/CHANGELOG.md +0 -158
  17. package/dist/demos/tv-card/README.md +0 -332
  18. package/dist/demos/tv-demo/CHANGELOG.md +0 -352
  19. package/dist/demos/tv-demo/README.md +0 -229
  20. package/dist/demos/tv-footer/CHANGELOG.md +0 -67
  21. package/dist/demos/tv-footer/README.md +0 -760
  22. package/dist/demos/tv-hero/CHANGELOG.md +0 -137
  23. package/dist/demos/tv-hero/README.md +0 -410
  24. package/dist/demos/tv-label/CHANGELOG.md +0 -138
  25. package/dist/demos/tv-label/README.md +0 -357
  26. package/dist/demos/tv-menu/CHANGELOG.md +0 -145
  27. package/dist/demos/tv-menu/README.md +0 -389
  28. package/dist/demos/tv-modal/CHANGELOG.md +0 -127
  29. package/dist/demos/tv-modal/README.md +0 -466
  30. package/dist/demos/tv-pagination/CHANGELOG.md +0 -125
  31. package/dist/demos/tv-pagination/README.md +0 -275
  32. package/dist/demos/tv-progress-bar/CHANGELOG.md +0 -84
  33. package/dist/demos/tv-progress-bar/README.md +0 -894
  34. package/dist/demos/tv-relative-time/CHANGELOG.md +0 -122
  35. package/dist/demos/tv-relative-time/README.md +0 -405
  36. package/dist/demos/tv-scroll-top/CHANGELOG.md +0 -69
  37. package/dist/demos/tv-scroll-top/README.md +0 -445
  38. package/dist/demos/tv-search/CHANGELOG.md +0 -155
  39. package/dist/demos/tv-search/README.md +0 -407
  40. package/dist/demos/tv-settings/CHANGELOG.md +0 -94
  41. package/dist/demos/tv-settings/README.md +0 -314
  42. package/dist/demos/tv-sidebar/CHANGELOG.md +0 -229
  43. package/dist/demos/tv-sidebar/README.md +0 -592
  44. package/dist/demos/tv-theme-button/CHANGELOG.md +0 -136
  45. package/dist/demos/tv-theme-button/README.md +0 -392
  46. package/dist/demos/tv-toc/CHANGELOG.md +0 -80
  47. package/dist/demos/tv-toc/README.md +0 -288
  48. package/dist/favicon.ico +0 -0
@@ -1,255 +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 Button (TvButton)
5
- A flexible, framework‑agnostic Vue 3 button component with variants, sizes, icons, loading state, and customization utilities. Ship it in Single Page Apps or Server-Side Rendered (SSR) environments (e.g. Nuxt 3) with zero DOM assumptions.
6
-
7
- [![npm](https://img.shields.io/npm/v/@todovue/tv-button.svg)](https://www.npmjs.com/package/@todovue/tv-button)
8
- [![npm downloads](https://img.shields.io/npm/dm/@todovue/tv-button.svg)](https://www.npmjs.com/package/@todovue/tv-button)
9
- [![npm total downloads](https://img.shields.io/npm/dt/@todovue/tv-button.svg)](https://www.npmjs.com/package/@todovue/tv-button)
10
- ![License](https://img.shields.io/github/license/TODOvue/tv-button)
11
- ![Release Date](https://img.shields.io/github/release-date/TODOvue/tv-button)
12
- ![Bundle Size](https://img.shields.io/bundlephobia/minzip/@todovue/tv-button)
13
- ![Node Version](https://img.shields.io/node/v/@todovue/tv-button)
14
- ![Last Commit](https://img.shields.io/github/last-commit/TODOvue/tv-button)
15
- ![Stars](https://img.shields.io/github/stars/TODOvue/tv-button?style=social)
16
-
17
- > Demo: https://ui.todovue.blog/button/
18
-
19
- ## Table of Contents
20
- - [Features](#features)
21
- - [Installation](#installation)
22
- - [Quick Start (SPA)](#quick-start-spa)
23
- - [Style usage](#style-usage)
24
- - [Nuxt 4 / SSR Usage](#nuxt-4--ssr-usage)
25
- - [Component Registration Options](#component-registration-options)
26
- - [Props](#props)
27
- - [Events](#events)
28
- - [Icons](#icons)
29
- - [Customization (Styles / Theming)](#customization-styles--theming)
30
- - [Icon-only & Variant Notes](#icon-only--variant-notes)
31
- - [Accessibility](#accessibility)
32
- - [SSR Notes](#ssr-notes)
33
- - [Development](#development)
34
- - [Contributing](#contributing)
35
- - [License](#license)
36
-
37
- ## Features
38
- - **Variants**: primary, secondary, success, info, warning, error
39
- - **Sizes**: sm, md, lg, full-width option
40
- - Icon support (pre-bundled SVG set via `import.meta.glob`)
41
- - Icon-only and pure icon modes (`type="icon"` + `iconOnly`)
42
- - Loading state with spinner
43
- - Custom inline style override via `customStyle`
44
- - Emits both a custom event and the native click
45
- - Works in SPA and SSR (Nuxt 3) contexts
46
- - Tree-shake friendly (Vue marked external in library build)
47
-
48
- ## Installation
49
- Using npm:
50
- ```bash
51
- npm install @todovue/tv-button
52
- ```
53
- Using yarn:
54
- ```bash
55
- yarn add @todovue/tv-button
56
- ```
57
- Using pnpm:
58
- ```bash
59
- pnpm add @todovue/tv-button
60
- ```
61
-
62
- ## Quick Start (SPA)
63
- Global registration (main.js / main.ts):
64
- ```js
65
- import { createApp } from 'vue'
66
- import App from './App.vue'
67
- import '@todovue/tv-button/style.css'
68
- import TvButton from '@todovue/tv-button'
69
-
70
- createApp(App)
71
- .use(TvButton) // enables <TvButton /> globally
72
- .mount('#app')
73
- ```
74
- Local import inside a component:
75
- ```vue
76
- <script setup>
77
- import '@todovue/tv-button/style.css'
78
- import { TvButton } from '@todovue/tv-button'
79
-
80
- function onSubmit() {
81
- console.log('Clicked')
82
- }
83
- </script>
84
-
85
- <template>
86
- <TvButton variant="success" icon="check" @click-button="onSubmit">Submit</TvButton>
87
- </template>
88
- ```
89
-
90
- ## Style usage
91
-
92
- ### Vue 3 SPA with Vite
93
- ```ts
94
- // main.ts
95
- import { createApp } from 'vue'
96
- import App from './App.vue'
97
-
98
- import '@todovue/tv-button/style.css'
99
- import { TvButton } from '@todovue/tv-button'
100
-
101
- const app = createApp(App)
102
- app.component('TvButton', TvButton)
103
- app.mount('#app')
104
- ```
105
-
106
- ### Nuxt 3/4
107
- ```ts
108
- // nuxt.config.ts
109
- export default defineNuxtConfig({
110
- modules: [
111
- '@todovue/tv-button/nuxt'
112
- ]
113
- })
114
- ```
115
-
116
- ## Nuxt 4 / SSR Usage
117
- Create a plugin file: `plugins/tv-button.client.ts` (client-only is fine, or without suffix for SSR as it is safe):
118
- ```ts
119
- import { defineNuxtPlugin } from '#app'
120
- import TvButton from '@todovue/tv-button'
121
-
122
- export default defineNuxtPlugin(nuxtApp => {
123
- nuxtApp.vueApp.use(TvButton)
124
- })
125
- ```
126
- Use anywhere:
127
- ```vue
128
- <TvButton outlined icon="info">Details</TvButton>
129
- ```
130
- Optional direct import (no plugin):
131
- ```vue
132
- <script setup>
133
- import { TvButton } from '@todovue/tv-button'
134
- </script>
135
- ```
136
-
137
- ## Component Registration Options
138
- | Approach | When to use |
139
- |-------------------------------------------------------------------|------------------------------------------------|
140
- | Global via `app.use(TvButton)` | Many usages across app / design system install |
141
- | Local named import `{ TvButton }` | Isolated / code-split contexts |
142
- | Direct default import `import TvButton from '@todovue/tv-button'` | Single usage or manual registration |
143
-
144
- ## Props
145
- All boolean style props have two interchangeable forms: a long form (`isSomething`) and a short alias.
146
-
147
- | Prop | Type | Default | Description |
148
- |--------------|-------------------------------------------|-----------|--------------------------------------------------------|
149
- | buttonText | string | '' | Optional text (alternative to slot). |
150
- | variant | 'primary' \| 'secondary' \| 'success' ... | 'primary' | Visual style variant. |
151
- | size | 'sm' \| 'md' \| 'lg' | 'md' | Button size. |
152
- | customStyle | object | {} | Inline style overrides (`{ backgroundColor, color }`). |
153
- | icon | string | null | Name of bundled icon. |
154
- | iconColor | string | 'white' | Icon color override. |
155
- | iconPosition | 'left' \| 'right' | 'right' | Icon position relative to text. |
156
- | type | 'button' \| 'submit' \| 'reset' \| 'icon' | 'button' | Native button type. Use 'icon' for icon-only styling. |
157
- | ariaLabel | string | '' | Accessibility label (required if no text / icon-only). |
158
- | iconOnly | boolean | false | Renders only the icon (no padding/background). |
159
- | outlined | boolean | false | Outlined style. |
160
- | rounded | boolean | false | Rounded corners. |
161
- | disabled | boolean | false | Disables interaction. |
162
- | loading | boolean | false | Shows spinner & disables. |
163
- | full | boolean | false | Full width. |
164
- | text | boolean | false | Text (minimal) style. |
165
- | href | string | null | URL for native anchor tag. |
166
- | to | string \| object | null | Route for RouterLink / NuxtLink. |
167
- | target | string | null | Anchor target (e.g. '_blank'). |
168
- | rel | string | null | Anchor rel attribute. |
169
-
170
- > Note: Because `type` is bound to the native `<button type="...">`, using `type="icon"` produces a non-standard button attribute. This does not break rendering but is semantically incorrect in forms. A future release will introduce `variant` and keep `htmlType` separate (see Roadmap).
171
-
172
- ## Events
173
- | Event name (kebab) | Emits (camel) | Description |
174
- |--------------------|---------------|---------------------------------------------|
175
- | `click-button` | `clickButton` | Custom semantic click event. |
176
- | `click` | `click` | Native passthrough (also emitted manually). |
177
-
178
- Usage:
179
- ```vue
180
- <TvButton @click-button="onAction" />
181
- <TvButton @click="onNative" />
182
- ```
183
-
184
- ## Icons
185
- Set with the `icon` prop. Available names:
186
- `account`, `add-user`, `alert`, `arrow-down`, `arrow-left`, `arrow-right`, `arrow-up`, `block`, `calendar`, `cancel`, `check`, `clone`, `dark`, `download`, `edit`, `external-link`, `favorite`, `filter`, `help`, `info`, `light`, `loading`, `lock`, `login`, `logout`, `menu`, `minus`, `notification`, `plus`, `remove`, `search`, `settings`, `share`, `star`, `todovue`, `unlock`, `update`, `view` `double-arrow-left`, `double-arrow-right`, `home`, `dots-vertical`, `eye-off`, `trash`, `upload`, `dashboard`, `folder`, `link`, `mail` and `save`.
187
-
188
- Example:
189
- ```vue
190
- <TvButton icon="check" variant="success">Saved</TvButton>
191
- <TvButton icon="info" iconPosition="left" outlined>Info</TvButton>
192
- ```
193
-
194
- ## Customization (Styles / Theming)
195
- Inline overrides via `customStyle`:
196
- ```vue
197
- <TvButton :customStyle="{ backgroundColor: '#0f2e5b', color: '#fff' }">Branded</TvButton>
198
- ```
199
- Outlined variant adapts automatically:
200
- ```vue
201
- <TvButton outlined :customStyle="{ backgroundColor: '#ff4081', color: '#fff' }">Pink Outline</TvButton>
202
- ```
203
- > A subtle hover darkening is auto-generated when `customStyle.backgroundColor` exists.
204
-
205
- ## Icon-only & Variant Notes
206
- Pure icon button:
207
- ```vue
208
- <TvButton type="icon" icon="edit" />
209
- ```
210
- Inline icon-only action (no background / padding):
211
- ```vue
212
- <TvButton type="icon" icon="edit" :iconOnly="true" aria-label="Edit item" />
213
- ```
214
- Loading state:
215
- ```vue
216
- <TvButton loading icon="download">Processing...</TvButton>
217
- ```
218
-
219
- Link usage:
220
- ```vue
221
- <!-- Native anchor -->
222
- <TvButton href="https://todovvue.blog" target="_blank">External Link</TvButton>
223
-
224
- <!-- Router link -->
225
- <TvButton to="/dashboard">Go to Dashboard</TvButton>
226
- ```
227
-
228
- ## Accessibility
229
- - Always provide visible text OR `aria-label`.
230
- - Mandatory: add `aria-label` when using `iconOnly` or when slot content is empty.
231
- - Disabled state uses both `disabled` attribute and styling classes.
232
-
233
- ## SSR Notes
234
- - No direct DOM (`window` / `document`) access in source → safe for SSR.
235
- - Styles are now served from a separate CSS file generated by Vite (`dist/tv-button.css`). You need to import it explicitly in your app (SPA or Nuxt) using `@todovue/tv-button/style.css`.
236
- - SVG icons are bundled via Vite's `import.meta.glob` (works in Vite + Nuxt).
237
-
238
- ## Development
239
- ```bash
240
- git clone https://github.com/TODOvue/tv-button.git
241
- cd tv-button
242
- yarn install
243
- yarn dev # run demo playground
244
- yarn build # build library
245
- ```
246
- Local demo served from Vite using `index.html` + `src/demo` examples.
247
-
248
- ## Contributing
249
- PRs and issues welcome. See [CONTRIBUTING.md](./CONTRIBUTING.md) and [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).
250
-
251
- ## License
252
- MIT © TODOvue
253
-
254
- ### Attributions
255
- Crafted for the TODOvue component ecosystem
@@ -1,158 +0,0 @@
1
- # Changelog
2
-
3
- All notable changes to `@todovue/tv-card` will be documented in this file.
4
-
5
- This project adheres to [Semantic Versioning](https://semver.org/).
6
-
7
- ## [1.1.4] - 2026-01-27
8
-
9
- ### Changed
10
- - Simplified the file list in `package.json` to include only essential assets.
11
- - Simplified the build configuration by removing demo-specific logic.
12
- - Enhanced GitHub Actions workflows to automate npm package publishing and GitHub release creation.
13
- - Moved the `@todovue/tv-demo` component import from main.js to `Demo.vue` to localize its usage.
14
- - Updated build commands to include `README.md` and `CHANGELOG.md` files in the public directory during the build process.
15
-
16
- ### Added
17
- - Included the `src` directory in the `package.json` files list to ensure component source files are bundled in the package distribution.
18
-
19
- ### Removed
20
- - Eliminated the global import of the `@todovue/tv-demo` component from `main.js`.
21
-
22
- ### Dependencies
23
- - Updated `@todovue/tv-demo` to `^1.4.11`.
24
- - Updated `@todovue/tv-label` to `^1.2.3`.
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.1.3] - 2026-01-21
30
-
31
- ### Removed
32
- - Removed the `uppercase` text transformation from title styles to improve readability and allow for more flexible typography.
33
-
34
- ### Dependencies
35
- - Updated `@todovue/tv-button` to `^1.2.4`.
36
- - Updated `@todovue/tv-label` to `^1.2.1`.
37
- - Updated `@todovue/tv-demo` to `^1.4.4`.
38
- - Updated `sass` to `^1.97.2`.
39
- - Updated `vite` to `^7.3.1`.
40
-
41
- ## [1.1.2] - 2025-12-27
42
-
43
- ### Added
44
- - Added automatic publishing to the TODOvue cPanel in `release.yml` for each release, simplifying package distribution and updates.
45
- - Added `package-lock.json` to the repository to ensure dependency consistency and facilitate version management across development and production environments.
46
-
47
- ### Changed
48
- - Changed the `base` option in `vite.config.js` for website deployment in cpanel.
49
-
50
- ### Fixed
51
- - Fixed repository URL in `package.json` to point to the correct GitHub repository.
52
- - Fixed the token configuration used to generate the package in the GitHub Actions workflow `release.yml`.
53
-
54
- ### Dependencies
55
- - Updated dependency versions in `package.json` to maintain compatibility and benefit from improvements and bug fixes in the used libraries.
56
-
57
- ## [1.1.1] - 2025-11-25
58
-
59
- ### Fixed
60
- - Fixed styles for horizontal variant of the card component.
61
- - Fixed `small` prop styles for horizontal variant of the card component.
62
- - Fixed full width styles for horizontal variant of the card component.
63
-
64
- ## [1.1.0] - 2025-11-25
65
-
66
- ### Added
67
- - Added horizontal variant for the card component, allowing for a side-by-side layout of image and content.
68
-
69
- ## [1.0.7] - 2025-11-24
70
-
71
- ### Dependencies
72
- - Updated the `@todovue/tv-demo` dependency to `^1.2.2` to ensure compatibility with the latest changes.
73
-
74
- ### Changed
75
- - Updated background and text colors for dark and light themes to improve readability and visual comfort.
76
-
77
- ## [1.0.6] - 2025-11-21
78
-
79
- ### Added
80
- - Added `nux.js` configuration file for Nuxt 4 integration.
81
- - Added `tsconfig.json` for proper type checking during build.
82
- - Create `global.d.ts` to declare module for TypeScript users.
83
- - Added Nuxt module for automatic style injection and auto-registration of the `TvCard` component.
84
- - The `@todovue/tv-card` component is now externalized from the final build, reducing bundle size.
85
- - Added `CHANGELOG.md` in script to generate demo and documentation site.
86
-
87
- ### Dependencies
88
- - Updated the `@todovue/tv-demo` dependency to `^1.1.0` to ensure compatibility with the latest changes.
89
- - Updated the `@todovue/tv-button` dependency to `^1.2.2` to ensure compatibility with the latest changes.
90
- - Updated the `@todovue/tv-label` dependency to `^1.1.1` to ensure compatibility with the latest changes.
91
-
92
- ## [1.0.5] - 2025-11-15
93
-
94
- ### Changed
95
- - Removed CSS injection via `vite-plugin-css-injected-by-js`.
96
- - Styles are now served from a separate CSS file generated by Vite (`dist/*.css`) and must be imported explicitly in the consuming app (SPA or Nuxt).
97
- - These changes improve SSR/SSG compatibility, especially for Nuxt-based applications.
98
-
99
- ## [1.0.4] - 2025-11-13
100
-
101
- ### Fixed
102
- - Fixed position of title in card when the title is long and wraps into multiple lines.
103
-
104
- ## [1.0.3] - 2025-11-13
105
-
106
- ### Fixed
107
- - Fixed styles for dark and light mode in the library build.
108
- - Fixed the title overflow when it is too long and does not fit on a single line.
109
-
110
- ### Changed
111
- - Corrected demo imports.
112
-
113
- ## [1.0.2] - 2025-10-17
114
-
115
- ### Changed
116
- - The library build now uses `src/entry.ts` (exports both the component and the plugin) instead of directly exporting the `.vue` file.
117
- - CSS injection via JS has been removed for the library build (it is only kept for the demo), generating a `tv-card.css` file optimized for SSR/Nuxt.
118
- - Changed node-version to workflows release.yml to 20.
119
-
120
- ### Added
121
- - Plugin installation support: `app.use(TvLabel)` or `app.use(TvLabelPlugin)`.
122
- - Explicit export of the style file: `import '@todovue/tv-label/style.css'`.
123
- - Documentation for usage in SSR and Nuxt 3 applications.
124
-
125
- ## [1.0.1] - 2025-05-07
126
-
127
- ### Fixed
128
- - Fixed styles and global style imports
129
-
130
- ## [1.0.0] - 2025-05-05
131
-
132
- ### Added
133
- - Initial release of `TvCard` component under the `@todovue` namespace.
134
- - Supports basic card structure with:
135
- - Title, description, image, and alt text.
136
- - Primary action button.
137
- - Added support for:
138
- - Secondary button (`secondaryButtonText`).
139
- - Custom labels with optional label limit.
140
- - Fully customizable color scheme: background, text, button styles.
141
- - Emitted events:
142
- - `clickButton` (on primary button click)
143
- - `clickSecondaryButton` (on secondary button click)
144
- - `clickLabel` (on label click)
145
-
146
- [1.1.4]: https://github.com/TODOvue/todovue-card/pull/16/files
147
- [1.1.3]: https://github.com/TODOvue/todovue-card/pull/15/files
148
- [1.1.2]: https://github.com/TODOvue/todovue-card/pull/14/files
149
- [1.1.1]: https://github.com/TODOvue/todovue-card/pull/13/files
150
- [1.1.0]: https://github.com/TODOvue/todovue-card/pull/12/files
151
- [1.0.7]: https://github.com/TODOvue/todovue-card/pull/11/files
152
- [1.0.6]: https://github.com/TODOvue/todovue-card/pull/10/files
153
- [1.0.5]: https://github.com/TODOvue/todovue-card/pull/9/files
154
- [1.0.4]: https://github.com/TODOvue/todovue-card/pull/8/files
155
- [1.0.3]: https://github.com/TODOvue/todovue-card/pull/7/files
156
- [1.0.2]: https://github.com/TODOvue/todovue-card/pull/6/files
157
- [1.0.1]: https://github.com/TODOvue/todovue-card/pull/4/files
158
- [1.0.0]: https://github.com/TODOvue/todovue-card/pull/3/files