@zairakai/vue-components 1.1.0

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 (92) hide show
  1. package/README.md +113 -0
  2. package/dist/Content/index.d.ts +11 -0
  3. package/dist/Content/index.d.ts.map +1 -0
  4. package/dist/Content/index.js +11 -0
  5. package/dist/Content/index.js.map +1 -0
  6. package/dist/Form/index.d.ts +37 -0
  7. package/dist/Form/index.d.ts.map +1 -0
  8. package/dist/Form/index.js +37 -0
  9. package/dist/Form/index.js.map +1 -0
  10. package/dist/Layout/index.d.ts +21 -0
  11. package/dist/Layout/index.d.ts.map +1 -0
  12. package/dist/Layout/index.js +21 -0
  13. package/dist/Layout/index.js.map +1 -0
  14. package/dist/Medias/index.d.ts +15 -0
  15. package/dist/Medias/index.d.ts.map +1 -0
  16. package/dist/Medias/index.js +15 -0
  17. package/dist/Medias/index.js.map +1 -0
  18. package/dist/index.d.ts +15 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +31 -0
  21. package/dist/index.js.map +1 -0
  22. package/package.json +129 -0
  23. package/src/Content/Blockquote.vue +23 -0
  24. package/src/Content/Heading.vue +33 -0
  25. package/src/Content/Link.vue +204 -0
  26. package/src/Content/List.vue +121 -0
  27. package/src/Content/Msr.vue +24 -0
  28. package/src/Content/Paragraph.vue +35 -0
  29. package/src/Content/index.ts +11 -0
  30. package/src/Form/Additional.vue +23 -0
  31. package/src/Form/Button.vue +55 -0
  32. package/src/Form/Checkbox.vue +60 -0
  33. package/src/Form/Color.vue +33 -0
  34. package/src/Form/Datalist.vue +28 -0
  35. package/src/Form/Date.vue +33 -0
  36. package/src/Form/Datetime.vue +33 -0
  37. package/src/Form/Email.vue +38 -0
  38. package/src/Form/Field.vue +32 -0
  39. package/src/Form/Fieldset.vue +34 -0
  40. package/src/Form/File.vue +33 -0
  41. package/src/Form/Form.vue +22 -0
  42. package/src/Form/Group.vue +32 -0
  43. package/src/Form/Hidden.vue +34 -0
  44. package/src/Form/Input.vue +211 -0
  45. package/src/Form/Label.vue +68 -0
  46. package/src/Form/Month.vue +38 -0
  47. package/src/Form/Number.vue +33 -0
  48. package/src/Form/Password.vue +38 -0
  49. package/src/Form/Radio.vue +33 -0
  50. package/src/Form/Range.vue +33 -0
  51. package/src/Form/Reset.vue +17 -0
  52. package/src/Form/Search.vue +33 -0
  53. package/src/Form/Select.vue +156 -0
  54. package/src/Form/Submit.vue +17 -0
  55. package/src/Form/Switch.vue +47 -0
  56. package/src/Form/Tel.vue +33 -0
  57. package/src/Form/Textarea.vue +163 -0
  58. package/src/Form/Time.vue +38 -0
  59. package/src/Form/Toggle.vue +43 -0
  60. package/src/Form/Url.vue +33 -0
  61. package/src/Form/Week.vue +38 -0
  62. package/src/Form/index.ts +37 -0
  63. package/src/Layout/Article.vue +27 -0
  64. package/src/Layout/Aside.vue +25 -0
  65. package/src/Layout/Column.vue +27 -0
  66. package/src/Layout/Container.vue +25 -0
  67. package/src/Layout/Flex.vue +30 -0
  68. package/src/Layout/FlexItem.vue +23 -0
  69. package/src/Layout/Footer.vue +25 -0
  70. package/src/Layout/Grid.vue +35 -0
  71. package/src/Layout/GridItem.vue +23 -0
  72. package/src/Layout/Header.vue +25 -0
  73. package/src/Layout/Loader.vue +29 -0
  74. package/src/Layout/Main.vue +25 -0
  75. package/src/Layout/Nav.vue +25 -0
  76. package/src/Layout/Row.vue +27 -0
  77. package/src/Layout/Section.vue +31 -0
  78. package/src/Layout/Wrapper.vue +23 -0
  79. package/src/Layout/index.ts +21 -0
  80. package/src/Medias/Audio.vue +69 -0
  81. package/src/Medias/Canvas.vue +27 -0
  82. package/src/Medias/Figcaption.vue +11 -0
  83. package/src/Medias/Figure.vue +23 -0
  84. package/src/Medias/Iframe.vue +51 -0
  85. package/src/Medias/Image.vue +63 -0
  86. package/src/Medias/Object.vue +38 -0
  87. package/src/Medias/Source.vue +33 -0
  88. package/src/Medias/Track.vue +33 -0
  89. package/src/Medias/Video.vue +75 -0
  90. package/src/Medias/index.ts +15 -0
  91. package/src/index.ts +41 -0
  92. package/src/vue-shims.d.ts +17 -0
package/README.md ADDED
@@ -0,0 +1,113 @@
1
+ # @zairakai/vue-components
2
+
3
+ [![Main][pipeline-main-badge]][pipeline-main-link]
4
+ [![Develop][pipeline-develop-badge]][pipeline-develop-link]
5
+ [![Coverage][coverage-badge]][coverage-link]
6
+
7
+ [![npm][npm-badge]][npm-link]
8
+ [![GitLab Release][gitlab-release-badge]][gitlab-release]
9
+ [![License][license-badge]][license]
10
+
11
+ [![Node.js][node-badge]][node]
12
+ [![ESLint][eslint-badge]][eslint]
13
+ [![Prettier][prettier-badge]][prettier]
14
+
15
+ Collection of reusable Vue 3 components — TypeScript, v-model, WAI-ARIA.
16
+
17
+ ---
18
+
19
+ ## Install
20
+
21
+ ```bash
22
+ npm install @zairakai/vue-components
23
+ ```
24
+
25
+ ---
26
+
27
+ ## Usage
28
+
29
+ ### Plugin
30
+
31
+ ```typescript
32
+ import { createApp } from 'vue'
33
+ import VueComponentsPlugin from '@zairakai/vue-components'
34
+
35
+ const app = createApp(App)
36
+ app.use(VueComponentsPlugin)
37
+ app.mount('#app')
38
+ ```
39
+
40
+ With a custom prefix:
41
+
42
+ ```typescript
43
+ app.use(VueComponentsPlugin, { prefix: 'Zk' })
44
+ // ZkFormInput, ZkLayoutContainer, etc.
45
+ ```
46
+
47
+ ### Import by category
48
+
49
+ ```typescript
50
+ import { FormInput, FormButton } from '@zairakai/vue-components/Form'
51
+ import { LayoutContainer, LayoutRow } from '@zairakai/vue-components/Layout'
52
+ import { ContentHeading, ContentParagraph } from '@zairakai/vue-components/Content'
53
+ import { MediaImage, MediaVideo } from '@zairakai/vue-components/Medias'
54
+ ```
55
+
56
+ ---
57
+
58
+ ## Categories
59
+
60
+ | Category | Components |
61
+ | --------- | -------------------------------------------------------- |
62
+ | `Form` | Input, Button, Select, Textarea, Checkbox, Radio, etc. |
63
+ | `Layout` | Container, Grid, Flex, Header, Footer, Nav, etc. |
64
+ | `Content` | Heading, Paragraph, Link, List, Blockquote, Msr |
65
+ | `Medias` | Image, Figure, Audio, Video, Iframe, Canvas, etc. |
66
+
67
+ ---
68
+
69
+ ## Development
70
+
71
+ ```bash
72
+ npm install
73
+ make ci # full CI validation
74
+ make test-coverage # run vitest with coverage
75
+ ```
76
+
77
+ See [CONTRIBUTING.md](./CONTRIBUTING.md) for the full development workflow.
78
+
79
+ ---
80
+
81
+ ## Getting Help
82
+
83
+ [![License][license-badge]][license]
84
+ [![Security Policy][security-badge]][security]
85
+ [![Issues][issues-badge]][issues]
86
+
87
+ **Made with ❤️ by [Zairakai][ecosystem]**
88
+
89
+ <!-- Reference Links -->
90
+
91
+ [pipeline-main-badge]: https://gitlab.com/zairakai/npm-packages/vue-components/badges/main/pipeline.svg?ignore_skipped=true&key_text=Main
92
+ [pipeline-main-link]: https://gitlab.com/zairakai/npm-packages/vue-components/-/commits/main
93
+ [pipeline-develop-badge]: https://gitlab.com/zairakai/npm-packages/vue-components/badges/develop/pipeline.svg?ignore_skipped=true&key_text=Develop
94
+ [pipeline-develop-link]: https://gitlab.com/zairakai/npm-packages/vue-components/-/commits/develop
95
+ [coverage-badge]: https://gitlab.com/zairakai/npm-packages/vue-components/badges/main/coverage.svg
96
+ [coverage-link]: https://gitlab.com/zairakai/npm-packages/vue-components/-/pipelines?ref=main
97
+ [npm-badge]: https://img.shields.io/npm/v/@zairakai/vue-components
98
+ [npm-link]: https://www.npmjs.com/package/@zairakai/vue-components
99
+ [gitlab-release-badge]: https://img.shields.io/gitlab/v/release/zairakai/npm-packages/vue-components?logo=gitlab
100
+ [gitlab-release]: https://gitlab.com/zairakai/npm-packages/vue-components/-/releases
101
+ [license-badge]: https://img.shields.io/badge/license-MIT-blue.svg
102
+ [license]: ./LICENSE
103
+ [security-badge]: https://img.shields.io/badge/security-scanned-green.svg
104
+ [security]: ./SECURITY.md
105
+ [issues-badge]: https://img.shields.io/gitlab/issues/open-raw/zairakai%2Fnpm-packages%2Fvue-components?logo=gitlab&label=Issues
106
+ [issues]: https://gitlab.com/zairakai/npm-packages/vue-components/-/issues
107
+ [node-badge]: https://img.shields.io/badge/node.js-%3E%3D22-green.svg?logo=node.js
108
+ [node]: https://nodejs.org
109
+ [eslint-badge]: https://img.shields.io/badge/code%20style-eslint-4B32C3.svg?logo=eslint
110
+ [eslint]: https://eslint.org
111
+ [prettier-badge]: https://img.shields.io/badge/formatter-prettier-F7B93E.svg?logo=prettier
112
+ [prettier]: https://prettier.io
113
+ [ecosystem]: https://gitlab.com/zairakai
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Content Components
3
+ * Components for text content and typography
4
+ */
5
+ export { default as ContentBlockquote } from './Blockquote.vue';
6
+ export { default as ContentHeading } from './Heading.vue';
7
+ export { default as ContentLink } from './Link.vue';
8
+ export { default as ContentList } from './List.vue';
9
+ export { default as ContentMsr } from './Msr.vue';
10
+ export { default as ContentParagraph } from './Paragraph.vue';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Content/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Content Components
3
+ * Components for text content and typography
4
+ */
5
+ export { default as ContentBlockquote } from './Blockquote.vue';
6
+ export { default as ContentHeading } from './Heading.vue';
7
+ export { default as ContentLink } from './Link.vue';
8
+ export { default as ContentList } from './List.vue';
9
+ export { default as ContentMsr } from './Msr.vue';
10
+ export { default as ContentParagraph } from './Paragraph.vue';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Content/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Form Components
3
+ * Reusable form elements with v-model support
4
+ */
5
+ export { default as FormAdditional } from './Additional.vue';
6
+ export { default as FormButton } from './Button.vue';
7
+ export { default as FormCheckbox } from './Checkbox.vue';
8
+ export { default as FormColor } from './Color.vue';
9
+ export { default as FormDatalist } from './Datalist.vue';
10
+ export { default as FormDate } from './Date.vue';
11
+ export { default as FormDatetime } from './Datetime.vue';
12
+ export { default as FormEmail } from './Email.vue';
13
+ export { default as FormField } from './Field.vue';
14
+ export { default as FormFieldset } from './Fieldset.vue';
15
+ export { default as FormFile } from './File.vue';
16
+ export { default as FormForm } from './Form.vue';
17
+ export { default as FormGroup } from './Group.vue';
18
+ export { default as FormHidden } from './Hidden.vue';
19
+ export { default as FormInput } from './Input.vue';
20
+ export { default as FormLabel } from './Label.vue';
21
+ export { default as FormMonth } from './Month.vue';
22
+ export { default as FormNumber } from './Number.vue';
23
+ export { default as FormPassword } from './Password.vue';
24
+ export { default as FormRadio } from './Radio.vue';
25
+ export { default as FormRange } from './Range.vue';
26
+ export { default as FormReset } from './Reset.vue';
27
+ export { default as FormSearch } from './Search.vue';
28
+ export { default as FormSelect } from './Select.vue';
29
+ export { default as FormSubmit } from './Submit.vue';
30
+ export { default as FormSwitch } from './Switch.vue';
31
+ export { default as FormTel } from './Tel.vue';
32
+ export { default as FormTextarea } from './Textarea.vue';
33
+ export { default as FormTime } from './Time.vue';
34
+ export { default as FormToggle } from './Toggle.vue';
35
+ export { default as FormUrl } from './Url.vue';
36
+ export { default as FormWeek } from './Week.vue';
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Form/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Form Components
3
+ * Reusable form elements with v-model support
4
+ */
5
+ export { default as FormAdditional } from './Additional.vue';
6
+ export { default as FormButton } from './Button.vue';
7
+ export { default as FormCheckbox } from './Checkbox.vue';
8
+ export { default as FormColor } from './Color.vue';
9
+ export { default as FormDatalist } from './Datalist.vue';
10
+ export { default as FormDate } from './Date.vue';
11
+ export { default as FormDatetime } from './Datetime.vue';
12
+ export { default as FormEmail } from './Email.vue';
13
+ export { default as FormField } from './Field.vue';
14
+ export { default as FormFieldset } from './Fieldset.vue';
15
+ export { default as FormFile } from './File.vue';
16
+ export { default as FormForm } from './Form.vue';
17
+ export { default as FormGroup } from './Group.vue';
18
+ export { default as FormHidden } from './Hidden.vue';
19
+ export { default as FormInput } from './Input.vue';
20
+ export { default as FormLabel } from './Label.vue';
21
+ export { default as FormMonth } from './Month.vue';
22
+ export { default as FormNumber } from './Number.vue';
23
+ export { default as FormPassword } from './Password.vue';
24
+ export { default as FormRadio } from './Radio.vue';
25
+ export { default as FormRange } from './Range.vue';
26
+ export { default as FormReset } from './Reset.vue';
27
+ export { default as FormSearch } from './Search.vue';
28
+ export { default as FormSelect } from './Select.vue';
29
+ export { default as FormSubmit } from './Submit.vue';
30
+ export { default as FormSwitch } from './Switch.vue';
31
+ export { default as FormTel } from './Tel.vue';
32
+ export { default as FormTextarea } from './Textarea.vue';
33
+ export { default as FormTime } from './Time.vue';
34
+ export { default as FormToggle } from './Toggle.vue';
35
+ export { default as FormUrl } from './Url.vue';
36
+ export { default as FormWeek } from './Week.vue';
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Form/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Layout Components
3
+ * Structural components for page layout and organization
4
+ */
5
+ export { default as LayoutArticle } from './Article.vue';
6
+ export { default as LayoutAside } from './Aside.vue';
7
+ export { default as LayoutColumn } from './Column.vue';
8
+ export { default as LayoutContainer } from './Container.vue';
9
+ export { default as LayoutFlex } from './Flex.vue';
10
+ export { default as LayoutFlexItem } from './FlexItem.vue';
11
+ export { default as LayoutFooter } from './Footer.vue';
12
+ export { default as LayoutGrid } from './Grid.vue';
13
+ export { default as LayoutGridItem } from './GridItem.vue';
14
+ export { default as LayoutHeader } from './Header.vue';
15
+ export { default as LayoutLoader } from './Loader.vue';
16
+ export { default as LayoutMain } from './Main.vue';
17
+ export { default as LayoutNav } from './Nav.vue';
18
+ export { default as LayoutRow } from './Row.vue';
19
+ export { default as LayoutSection } from './Section.vue';
20
+ export { default as LayoutWrapper } from './Wrapper.vue';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Layout/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Layout Components
3
+ * Structural components for page layout and organization
4
+ */
5
+ export { default as LayoutArticle } from './Article.vue';
6
+ export { default as LayoutAside } from './Aside.vue';
7
+ export { default as LayoutColumn } from './Column.vue';
8
+ export { default as LayoutContainer } from './Container.vue';
9
+ export { default as LayoutFlex } from './Flex.vue';
10
+ export { default as LayoutFlexItem } from './FlexItem.vue';
11
+ export { default as LayoutFooter } from './Footer.vue';
12
+ export { default as LayoutGrid } from './Grid.vue';
13
+ export { default as LayoutGridItem } from './GridItem.vue';
14
+ export { default as LayoutHeader } from './Header.vue';
15
+ export { default as LayoutLoader } from './Loader.vue';
16
+ export { default as LayoutMain } from './Main.vue';
17
+ export { default as LayoutNav } from './Nav.vue';
18
+ export { default as LayoutRow } from './Row.vue';
19
+ export { default as LayoutSection } from './Section.vue';
20
+ export { default as LayoutWrapper } from './Wrapper.vue';
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Layout/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Media Components
3
+ * Components for media content (images, videos, audio, etc.)
4
+ */
5
+ export { default as MediaAudio } from './Audio.vue';
6
+ export { default as MediaCanvas } from './Canvas.vue';
7
+ export { default as MediaFigcaption } from './Figcaption.vue';
8
+ export { default as MediaFigure } from './Figure.vue';
9
+ export { default as MediaIframe } from './Iframe.vue';
10
+ export { default as MediaImage } from './Image.vue';
11
+ export { default as MediaObject } from './Object.vue';
12
+ export { default as MediaSource } from './Source.vue';
13
+ export { default as MediaTrack } from './Track.vue';
14
+ export { default as MediaVideo } from './Video.vue';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Medias/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Media Components
3
+ * Components for media content (images, videos, audio, etc.)
4
+ */
5
+ export { default as MediaAudio } from './Audio.vue';
6
+ export { default as MediaCanvas } from './Canvas.vue';
7
+ export { default as MediaFigcaption } from './Figcaption.vue';
8
+ export { default as MediaFigure } from './Figure.vue';
9
+ export { default as MediaIframe } from './Iframe.vue';
10
+ export { default as MediaImage } from './Image.vue';
11
+ export { default as MediaObject } from './Object.vue';
12
+ export { default as MediaSource } from './Source.vue';
13
+ export { default as MediaTrack } from './Track.vue';
14
+ export { default as MediaVideo } from './Video.vue';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Medias/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @zairakai/npm-vue-components
3
+ * Collection of reusable Vue 3 components
4
+ */
5
+ import type { Plugin } from 'vue';
6
+ export * from './Content/index.js';
7
+ export * from './Form/index.js';
8
+ export * from './Layout/index.js';
9
+ export * from './Medias/index.js';
10
+ export interface VueComponentsOptions {
11
+ prefix?: string;
12
+ }
13
+ declare const VueComponentsPlugin: Plugin;
14
+ export default VueComponentsPlugin;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAO,MAAM,EAAE,MAAM,KAAK,CAAA;AAGtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AAGjC,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAGD,QAAA,MAAM,mBAAmB,EAAE,MAmB1B,CAAA;AAED,eAAe,mBAAmB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @zairakai/npm-vue-components
3
+ * Collection of reusable Vue 3 components
4
+ */
5
+ // Export all components by category
6
+ export * from './Content/index.js';
7
+ export * from './Form/index.js';
8
+ export * from './Layout/index.js';
9
+ export * from './Medias/index.js';
10
+ // Vue plugin for easy installation
11
+ const VueComponentsPlugin = {
12
+ install(app, options = {}) {
13
+ // Import all components dynamically
14
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
+ const components = import.meta.glob('./**/*.vue', {
16
+ eager: true,
17
+ });
18
+ for (const path in components) {
19
+ const component = components[path];
20
+ const name = (component.default.name ?? path.split('/').pop()?.replace('.vue', '') ?? '');
21
+ if (options.prefix) {
22
+ app.component(`${options.prefix}${name}`, component.default);
23
+ }
24
+ else {
25
+ app.component(name, component.default);
26
+ }
27
+ }
28
+ },
29
+ };
30
+ export default VueComponentsPlugin;
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,oCAAoC;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AAOjC,mCAAmC;AACnC,MAAM,mBAAmB,GAAW;IAClC,OAAO,CAAC,GAAQ,EAAE,UAAgC,EAAE;QAClD,oCAAoC;QACpC,8DAA8D;QAC9D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAmB,YAAY,EAAE;YAClE,KAAK,EAAE,IAAI;SACZ,CAAC,CAAA;QAEF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YAClC,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,CAAW,CAAA;YAEnG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,GAAG,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,EAAE,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;YAC9D,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;YACxC,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA;AAED,eAAe,mBAAmB,CAAA"}
package/package.json ADDED
@@ -0,0 +1,129 @@
1
+ {
2
+ "name": "@zairakai/vue-components",
3
+ "version": "1.1.0",
4
+ "description": "Collection of reusable Vue 3 components with TypeScript, v-model support, and WAI-ARIA accessibility for forms, layout, content, and media",
5
+ "keywords": [
6
+ "vue",
7
+ "vue3",
8
+ "components",
9
+ "form",
10
+ "layout",
11
+ "ui",
12
+ "composition-api",
13
+ "typescript",
14
+ "accessible",
15
+ "wai-aria"
16
+ ],
17
+ "homepage": "https://gitlab.com/zairakai/npm-packages/vue-components",
18
+ "bugs": {
19
+ "url": "https://gitlab.com/zairakai/npm-packages/vue-components/-/issues",
20
+ "email": "contact-project+zairakai-npm-packages-vue-components-80190598-issue-@incoming.gitlab.com"
21
+ },
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://gitlab.com/zairakai/npm-packages/vue-components.git"
25
+ },
26
+ "funding": [
27
+ {
28
+ "type": "patreon",
29
+ "url": "https://www.patreon.com/c/zairakai"
30
+ },
31
+ {
32
+ "type": "twitch",
33
+ "url": "https://www.twitch.tv/zairakai"
34
+ }
35
+ ],
36
+ "license": "MIT",
37
+ "author": "Stanislas Poisson <stanislas.p@the-white-rabbits.fr> (https://the-white-rabbits.fr)",
38
+ "contributors": [
39
+ {
40
+ "name": "Stanislas Poisson",
41
+ "url": "https://gitlab.com/zairakai",
42
+ "role": "Maintainer"
43
+ }
44
+ ],
45
+ "type": "module",
46
+ "exports": {
47
+ ".": {
48
+ "types": "./dist/index.d.ts",
49
+ "import": "./dist/index.js",
50
+ "require": "./dist/index.cjs"
51
+ },
52
+ "./Form": {
53
+ "types": "./dist/Form.d.ts",
54
+ "import": "./dist/Form.js",
55
+ "require": "./dist/Form.cjs"
56
+ },
57
+ "./Layout": {
58
+ "types": "./dist/Layout.d.ts",
59
+ "import": "./dist/Layout.js",
60
+ "require": "./dist/Layout.cjs"
61
+ },
62
+ "./Content": {
63
+ "types": "./dist/Content.d.ts",
64
+ "import": "./dist/Content.js",
65
+ "require": "./dist/Content.cjs"
66
+ },
67
+ "./Medias": {
68
+ "types": "./dist/Medias.d.ts",
69
+ "import": "./dist/Medias.js",
70
+ "require": "./dist/Medias.cjs"
71
+ }
72
+ },
73
+ "main": "./dist/index.cjs",
74
+ "types": "./dist/index.d.ts",
75
+ "files": [
76
+ "src",
77
+ "dist",
78
+ "LICENSE",
79
+ "README.md"
80
+ ],
81
+ "scripts": {
82
+ "build": "vue-tsc && vite build",
83
+ "eslint": "bash node_modules/@zairakai/js-dev-tools/scripts/eslint.sh",
84
+ "eslint:fix": "bash node_modules/@zairakai/js-dev-tools/scripts/eslint-fix.sh",
85
+ "markdownlint": "bash node_modules/@zairakai/js-dev-tools/scripts/markdownlint.sh",
86
+ "markdownlint:fix": "bash node_modules/@zairakai/js-dev-tools/scripts/markdownlint-fix.sh",
87
+ "postinstall": "bash node_modules/@zairakai/js-dev-tools/scripts/setup-project.sh --silent || true",
88
+ "prettier": "bash node_modules/@zairakai/js-dev-tools/scripts/prettier.sh",
89
+ "prettier:fix": "bash node_modules/@zairakai/js-dev-tools/scripts/prettier-fix.sh",
90
+ "setup": "bash node_modules/@zairakai/js-dev-tools/scripts/setup-project.sh",
91
+ "stylelint": "bash node_modules/@zairakai/js-dev-tools/scripts/stylelint.sh",
92
+ "stylelint:fix": "bash node_modules/@zairakai/js-dev-tools/scripts/stylelint-fix.sh",
93
+ "normalize": "make package-normalize",
94
+ "package:validate": "make package-validate",
95
+ "test": "make test-all",
96
+ "validate": "make quality"
97
+ },
98
+ "peerDependencies": {
99
+ "vue": "^3.0.0"
100
+ },
101
+ "devDependencies": {
102
+ "@types/node": "^25.0.0",
103
+ "@vitejs/plugin-vue": "^6.0.0",
104
+ "@vitest/coverage-v8": "^4.0.0",
105
+ "@vue/eslint-config-typescript": "^14.6.0",
106
+ "@vue/test-utils": "^2.4.0",
107
+ "@vue/tsconfig": "^0.9.0",
108
+ "@zairakai/js-dev-tools": "^1.0.0",
109
+ "jsdom": "^29.0.0",
110
+ "knip": "^5.86.0",
111
+ "pinia": "^3.0.4",
112
+ "sort-package-json": "^3.6.1",
113
+ "typescript": "^5.7.2",
114
+ "vite": "^8.0.0",
115
+ "vite-plugin-dts": "^4.5.4",
116
+ "vitest": "^4.0.0",
117
+ "vue": "^3.5.17",
118
+ "vue-eslint-parser": "^10.2.0",
119
+ "vue-router": "^5.0.3",
120
+ "vue-tsc": "^3.2.5"
121
+ },
122
+ "engines": {
123
+ "node": ">=22.0.0"
124
+ },
125
+ "publishConfig": {
126
+ "access": "public"
127
+ },
128
+ "outdatedIgnore": []
129
+ }
@@ -0,0 +1,23 @@
1
+ <script setup>
2
+ import { computed } from 'vue'
3
+
4
+ defineOptions({
5
+ name: 'ContentBlockquote',
6
+ })
7
+
8
+ const props = defineProps({
9
+ cite: String,
10
+ class: String,
11
+ })
12
+
13
+ const blockquoteProps = computed(() => ({
14
+ cite: props.cite,
15
+ class: props.class,
16
+ }))
17
+ </script>
18
+
19
+ <template>
20
+ <blockquote v-bind="blockquoteProps">
21
+ <slot />
22
+ </blockquote>
23
+ </template>
@@ -0,0 +1,33 @@
1
+ <script setup>
2
+ import { computed } from 'vue'
3
+
4
+ defineOptions({
5
+ name: 'ContentHeading',
6
+ })
7
+
8
+ const props = defineProps({
9
+ level: {
10
+ type: Number,
11
+ default: 1,
12
+ validator(value) {
13
+ return 1 <= value && 6 >= value
14
+ },
15
+ },
16
+ id: String,
17
+ class: String,
18
+ })
19
+
20
+ const headingProps = computed(() => ({
21
+ id: props.id,
22
+ class: props.class,
23
+ }))
24
+ </script>
25
+
26
+ <template>
27
+ <component
28
+ :is="`h${level}`"
29
+ v-bind="headingProps"
30
+ >
31
+ <slot />
32
+ </component>
33
+ </template>