@indielayer/ui 0.0.0-dev-20240129122517 → 0.0.0-dev-20240202140555

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 (192) hide show
  1. package/docs/App.vue +25 -0
  2. package/docs/assets/css/hljs.css +302 -0
  3. package/docs/assets/css/tailwind.css +46 -0
  4. package/docs/assets/images/error.svg +1 -0
  5. package/docs/assets/images/logo.png +0 -0
  6. package/docs/assets/images/logo_mini.svg +10 -0
  7. package/docs/assets/images/logo_white.png +0 -0
  8. package/docs/assets/images/logo_word.svg +12 -0
  9. package/docs/assets/images/logo_word_dark.svg +12 -0
  10. package/docs/assets/images/photo1.jpeg +0 -0
  11. package/docs/assets/images/photo2.jpeg +0 -0
  12. package/docs/components/Cookies.vue +42 -0
  13. package/docs/components/common/CodePreview.vue +80 -0
  14. package/docs/components/common/CodeSnippet.vue +49 -0
  15. package/docs/components/common/CopyButton.vue +50 -0
  16. package/docs/components/common/DocumentPage.vue +289 -0
  17. package/docs/components/common/Indielayer-theme.json +702 -0
  18. package/docs/components/common/MultiSnippet.vue +26 -0
  19. package/docs/components/menu/DocsMenu.vue +143 -0
  20. package/docs/components/toolbar/PreToolbar.vue +18 -0
  21. package/docs/components/toolbar/Toolbar.vue +63 -0
  22. package/docs/components/toolbar/ToolbarColorToggle.vue +49 -0
  23. package/docs/icons.ts +61 -0
  24. package/docs/layouts/default.vue +29 -0
  25. package/docs/layouts/simple.vue +3 -0
  26. package/docs/main.ts +33 -0
  27. package/docs/pages/colors.vue +125 -0
  28. package/docs/pages/component/accordion/index.vue +29 -0
  29. package/docs/pages/component/accordion/usage.vue +30 -0
  30. package/docs/pages/component/alert/index.vue +29 -0
  31. package/docs/pages/component/alert/usage.vue +18 -0
  32. package/docs/pages/component/avatar/index.vue +43 -0
  33. package/docs/pages/component/avatar/size.vue +9 -0
  34. package/docs/pages/component/avatar/usage.vue +9 -0
  35. package/docs/pages/component/avatar/variants.vue +8 -0
  36. package/docs/pages/component/badge/index.vue +29 -0
  37. package/docs/pages/component/badge/usage.vue +50 -0
  38. package/docs/pages/component/breadcrumbs/index.vue +29 -0
  39. package/docs/pages/component/breadcrumbs/usage.vue +19 -0
  40. package/docs/pages/component/button/button-group.vue +18 -0
  41. package/docs/pages/component/button/icons.vue +9 -0
  42. package/docs/pages/component/button/index.vue +64 -0
  43. package/docs/pages/component/button/size.vue +9 -0
  44. package/docs/pages/component/button/states.vue +6 -0
  45. package/docs/pages/component/button/usage.vue +12 -0
  46. package/docs/pages/component/button/variants.vue +7 -0
  47. package/docs/pages/component/card/index.vue +29 -0
  48. package/docs/pages/component/card/usage.vue +6 -0
  49. package/docs/pages/component/carousel/index.vue +29 -0
  50. package/docs/pages/component/carousel/usage.vue +10 -0
  51. package/docs/pages/component/checkbox/index.vue +50 -0
  52. package/docs/pages/component/checkbox/size.vue +9 -0
  53. package/docs/pages/component/checkbox/states.vue +9 -0
  54. package/docs/pages/component/checkbox/usage.vue +15 -0
  55. package/docs/pages/component/checkbox/variants.vue +8 -0
  56. package/docs/pages/component/container/index.vue +29 -0
  57. package/docs/pages/component/container/usage.vue +3 -0
  58. package/docs/pages/component/divider/index.vue +43 -0
  59. package/docs/pages/component/divider/label.vue +12 -0
  60. package/docs/pages/component/divider/usage.vue +7 -0
  61. package/docs/pages/component/divider/vertical.vue +7 -0
  62. package/docs/pages/component/drawer/index.vue +29 -0
  63. package/docs/pages/component/drawer/usage.vue +56 -0
  64. package/docs/pages/component/form/index.vue +29 -0
  65. package/docs/pages/component/form/usage.vue +96 -0
  66. package/docs/pages/component/formGroup/index.vue +29 -0
  67. package/docs/pages/component/formGroup/usage.vue +46 -0
  68. package/docs/pages/component/icon/index.vue +36 -0
  69. package/docs/pages/component/icon/usage.vue +6 -0
  70. package/docs/pages/component/icon/variants.vue +14 -0
  71. package/docs/pages/component/image/index.vue +29 -0
  72. package/docs/pages/component/image/usage.vue +8 -0
  73. package/docs/pages/component/input/index.vue +50 -0
  74. package/docs/pages/component/input/size.vue +13 -0
  75. package/docs/pages/component/input/states.vue +12 -0
  76. package/docs/pages/component/input/usage.vue +15 -0
  77. package/docs/pages/component/input/variants.vue +18 -0
  78. package/docs/pages/component/link/index.vue +29 -0
  79. package/docs/pages/component/link/usage.vue +12 -0
  80. package/docs/pages/component/loader/index.vue +29 -0
  81. package/docs/pages/component/loader/usage.vue +7 -0
  82. package/docs/pages/component/menu/index.vue +29 -0
  83. package/docs/pages/component/menu/usage.vue +69 -0
  84. package/docs/pages/component/modal/composed.vue +70 -0
  85. package/docs/pages/component/modal/index.vue +36 -0
  86. package/docs/pages/component/modal/usage.vue +61 -0
  87. package/docs/pages/component/notifications/index.vue +29 -0
  88. package/docs/pages/component/notifications/usage.vue +56 -0
  89. package/docs/pages/component/pagination/index.vue +29 -0
  90. package/docs/pages/component/pagination/usage.vue +17 -0
  91. package/docs/pages/component/popover/index.vue +29 -0
  92. package/docs/pages/component/popover/usage.vue +21 -0
  93. package/docs/pages/component/progress/index.vue +36 -0
  94. package/docs/pages/component/progress/usage.vue +7 -0
  95. package/docs/pages/component/progress/variants.vue +18 -0
  96. package/docs/pages/component/radio/index.vue +50 -0
  97. package/docs/pages/component/radio/size.vue +15 -0
  98. package/docs/pages/component/radio/states.vue +13 -0
  99. package/docs/pages/component/radio/usage.vue +14 -0
  100. package/docs/pages/component/radio/variants.vue +39 -0
  101. package/docs/pages/component/scroll/horizontal.vue +14 -0
  102. package/docs/pages/component/scroll/index.vue +36 -0
  103. package/docs/pages/component/scroll/usage.vue +5 -0
  104. package/docs/pages/component/select/index.vue +43 -0
  105. package/docs/pages/component/select/states.vue +22 -0
  106. package/docs/pages/component/select/usage.vue +45 -0
  107. package/docs/pages/component/select/variants.vue +23 -0
  108. package/docs/pages/component/skeleton/index.vue +29 -0
  109. package/docs/pages/component/skeleton/usage.vue +10 -0
  110. package/docs/pages/component/slider/index.vue +29 -0
  111. package/docs/pages/component/slider/usage.vue +15 -0
  112. package/docs/pages/component/spacer/index.vue +29 -0
  113. package/docs/pages/component/spacer/usage.vue +8 -0
  114. package/docs/pages/component/spinner/index.vue +36 -0
  115. package/docs/pages/component/spinner/usage.vue +3 -0
  116. package/docs/pages/component/spinner/variants.vue +9 -0
  117. package/docs/pages/component/stepper/index.vue +29 -0
  118. package/docs/pages/component/stepper/usage.vue +21 -0
  119. package/docs/pages/component/table/index.vue +36 -0
  120. package/docs/pages/component/table/states.vue +28 -0
  121. package/docs/pages/component/table/usage.vue +107 -0
  122. package/docs/pages/component/tabs/index.vue +29 -0
  123. package/docs/pages/component/tabs/usage.vue +137 -0
  124. package/docs/pages/component/tag/index.vue +29 -0
  125. package/docs/pages/component/tag/usage.vue +27 -0
  126. package/docs/pages/component/textarea/index.vue +43 -0
  127. package/docs/pages/component/textarea/states.vue +13 -0
  128. package/docs/pages/component/textarea/usage.vue +22 -0
  129. package/docs/pages/component/textarea/variants.vue +15 -0
  130. package/docs/pages/component/toggle/index.vue +43 -0
  131. package/docs/pages/component/toggle/states.vue +13 -0
  132. package/docs/pages/component/toggle/usage.vue +14 -0
  133. package/docs/pages/component/toggle/variants.vue +15 -0
  134. package/docs/pages/component/tooltip/index.vue +29 -0
  135. package/docs/pages/component/tooltip/usage.vue +16 -0
  136. package/docs/pages/error.vue +6 -0
  137. package/docs/pages/icons.vue +105 -0
  138. package/docs/pages/index.vue +157 -0
  139. package/docs/pages/play.vue +19 -0
  140. package/docs/pages/typography.vue +95 -0
  141. package/docs/router/index.ts +77 -0
  142. package/lib/components/accordion/Accordion.vue.d.ts +3 -0
  143. package/lib/components/accordion/Accordion.vue.js +7 -7
  144. package/lib/components/accordion/AccordionItem.vue.d.ts +1 -0
  145. package/lib/components/accordion/AccordionItem.vue.js +49 -47
  146. package/lib/components/accordion/index.d.ts +1 -1
  147. package/lib/components/accordion/theme/Accordion.carbon.theme.js +3 -6
  148. package/lib/components/accordion/theme/AccordionItem.base.theme.js +9 -9
  149. package/lib/components/accordion/theme/AccordionItem.carbon.theme.js +3 -14
  150. package/lib/components/carousel/CarouselSlide.vue.d.ts +19 -8
  151. package/lib/components/carousel/CarouselSlide.vue.js +2 -2
  152. package/lib/components/carousel/CarouselSlide.vue2.js +25 -18
  153. package/lib/components/checkbox/theme/Checkbox.base.theme.js +4 -4
  154. package/lib/components/container/Container.vue.d.ts +13 -0
  155. package/lib/components/container/Container.vue.js +15 -11
  156. package/lib/components/container/theme/Container.base.theme.js +7 -4
  157. package/lib/components/form/theme/Form.base.theme.js +1 -1
  158. package/lib/components/menu/Menu.vue.js +10 -10
  159. package/lib/components/menu/theme/MenuItem.base.theme.js +1 -1
  160. package/lib/components/modal/Modal.vue.d.ts +1 -1
  161. package/lib/components/radio/theme/Radio.base.theme.js +6 -6
  162. package/lib/components/select/Select.vue.js +47 -50
  163. package/lib/components/slider/theme/Slider.carbon.theme.js +4 -4
  164. package/lib/components/tab/Tab.vue.js +54 -53
  165. package/lib/components/tab/theme/TabGroup.carbon.theme.js +3 -3
  166. package/lib/composables/keys.d.ts +2 -2
  167. package/lib/index.js +1 -1
  168. package/lib/index.umd.js +3 -3
  169. package/lib/version.d.ts +1 -1
  170. package/lib/version.js +1 -1
  171. package/package.json +4 -2
  172. package/src/components/accordion/Accordion.vue +5 -1
  173. package/src/components/accordion/AccordionItem.vue +5 -2
  174. package/src/components/accordion/index.ts +1 -1
  175. package/src/components/accordion/theme/Accordion.carbon.theme.ts +3 -5
  176. package/src/components/accordion/theme/AccordionItem.base.theme.ts +10 -7
  177. package/src/components/accordion/theme/AccordionItem.carbon.theme.ts +2 -30
  178. package/src/components/carousel/CarouselSlide.vue +9 -4
  179. package/src/components/checkbox/theme/Checkbox.base.theme.ts +1 -1
  180. package/src/components/container/Container.vue +4 -0
  181. package/src/components/container/theme/Container.base.theme.ts +7 -1
  182. package/src/components/form/theme/Form.base.theme.ts +1 -1
  183. package/src/components/label/theme/Label.carbon.theme.ts +0 -2
  184. package/src/components/menu/Menu.vue +1 -1
  185. package/src/components/menu/theme/MenuItem.base.theme.ts +1 -1
  186. package/src/components/radio/theme/Radio.base.theme.ts +1 -1
  187. package/src/components/select/Select.vue +0 -3
  188. package/src/components/slider/theme/Slider.carbon.theme.ts +1 -1
  189. package/src/components/tab/Tab.vue +1 -1
  190. package/src/components/tab/theme/TabGroup.carbon.theme.ts +1 -1
  191. package/src/composables/keys.ts +2 -2
  192. package/src/version.ts +1 -1
@@ -0,0 +1,289 @@
1
+ <script setup lang="ts">
2
+ import { computed, onMounted, onUnmounted, ref } from 'vue'
3
+
4
+ const props = defineProps({
5
+ components: {
6
+ type: [Array, String],
7
+ default: () => [],
8
+ },
9
+ headings: {
10
+ type: Array,
11
+ default: () => [],
12
+ },
13
+ title: String,
14
+ description: String,
15
+ back: String,
16
+ github: String,
17
+ next: String,
18
+ demos: {
19
+ type: Array,
20
+ default: () => [],
21
+ },
22
+ })
23
+
24
+ const headers = [
25
+ { text: 'Name', value: 'name' },
26
+ { text: 'Type', value: 'type' },
27
+ { text: 'Default', value: 'default' },
28
+ { text: 'Values', value: 'validator' },
29
+ { text: 'Required', value: 'required' },
30
+ ]
31
+
32
+ const headersSimple = [
33
+ { text: 'Name', value: 'name' },
34
+ { text: 'Description', value: 'description' },
35
+ ]
36
+
37
+ const componentsProperties = computed(() => {
38
+ if (!props.components) return null
39
+ const components = Array.isArray(props.components) ? props.components : [props.components]
40
+ const properties = {}
41
+
42
+ components.forEach((comp: any) => {
43
+ const componentName = comp.name.slice(1)
44
+ let allValidators = {}
45
+ let allProps = {}
46
+
47
+ if (comp.mixins) comp.mixins.forEach((m) => {
48
+ allValidators = {
49
+ ...allValidators,
50
+ ...m.validators,
51
+ }
52
+ allProps = {
53
+ ...allProps,
54
+ ...m.props,
55
+ }
56
+ })
57
+
58
+ allValidators = {
59
+ ...allValidators,
60
+ ...comp.validators,
61
+ }
62
+
63
+ allProps = {
64
+ ...allProps,
65
+ ...comp.props,
66
+ }
67
+
68
+ if (Object.keys(allProps).length > 0) {
69
+ const mappedProps = Object.keys(allProps).map((key) => {
70
+ const propFrom = allProps[key].type ?? allProps[key]
71
+ let propDefault = allProps[key].default
72
+ let propType = []
73
+
74
+ if (Array.isArray(propFrom)) {
75
+ propType = propFrom.map((type) => type.name)
76
+ } else {
77
+ propType = [propFrom.name]
78
+ if (propFrom.name === 'Boolean' && !propDefault) propDefault = false
79
+ }
80
+
81
+ return {
82
+ name: key,
83
+ default: propDefault,
84
+ required: allProps[key].required,
85
+ validator: allValidators[key],
86
+ type: propType,
87
+ }
88
+ })
89
+
90
+ properties[componentName] = { props: mappedProps, ...properties[componentName] }
91
+ }
92
+
93
+ ['methods', 'slots'].forEach((property) => {
94
+ if (comp[property]) properties[componentName][property] = Object.keys(comp[property]).map((k) => ({ name: k }))
95
+ })
96
+
97
+ // vue 3 events
98
+ if (comp['emits']) properties[componentName]['emits'] = Array.isArray(comp['emits']) ? comp['emits'].map((k) => ({ name: k })) : Object.keys(comp['emits']).map((k) => ({ name: k }))
99
+ if (comp['expose']) properties[componentName]['methods'] = comp['expose'].map((k) => ({ name: k }))
100
+ })
101
+
102
+ return properties
103
+ })
104
+
105
+ const anchors = ref([])
106
+ const currentAnchor = ref(null)
107
+ const anchorObserver = ref(null)
108
+
109
+ onMounted(() => {
110
+ // setAnchorObserver()
111
+ // setAnchors()
112
+ })
113
+
114
+ onUnmounted(() => {
115
+ // anchorObserver.value.disconnect()
116
+ })
117
+
118
+ // function setAnchors() {
119
+ // document.querySelectorAll('h2').forEach((element) => {
120
+ // anchors.value.push({
121
+ // id: element.id,
122
+ // name: element?.textContent?.trim().replace('#', '') || '',
123
+ // })
124
+ // anchorObserver.value.observe(element)
125
+ // })
126
+ // }
127
+ // function setAnchorObserver() {
128
+ // anchorObserver = new IntersectionObserver((entries) => {
129
+ // entries.forEach((entry) => {
130
+ // if (entry.isIntersecting) currentAnchor.value = entry.target.id
131
+ // })
132
+ // }, {
133
+ // root: null,
134
+ // threshold: 1,
135
+ // })
136
+ // }
137
+ </script>
138
+
139
+ <template>
140
+ <div>
141
+ <section class="p-4 lg:p-8 max-w-4xl xl:max-w-7xl mx-auto">
142
+ <div class="w-full flex document-page">
143
+ <div class="min-w-0 flex-auto">
144
+ <div class="text-4xl font-semibold">
145
+ {{ title }}
146
+ <x-tooltip>
147
+ <x-link :href="`${github}/index.vue`" target="blank" color="#94a3b8">
148
+ <x-icon icon="edit" size="sm" />
149
+ </x-link>
150
+ <template #tooltip>
151
+ Edit on <span class="text-gray-300">GitHub</span>
152
+ </template>
153
+ </x-tooltip>
154
+ </div>
155
+ <div class="text-lg my-2 text-gray-500">{{ description }}</div>
156
+ <div class="mt-4">
157
+ <slot></slot>
158
+
159
+ <div v-for="demo in demos" :key="demo.name">
160
+ <code-preview
161
+ :title="demo.name"
162
+ :description="demo.description"
163
+ :code="demo.code"
164
+ :github="github"
165
+ >
166
+ <component :is="demo.component" />
167
+ </code-preview>
168
+ </div>
169
+
170
+ <div v-if="componentsProperties">
171
+ <h2 id="api" class="!text-2xl !mt-20"><a class="anchor" href="#api">#</a>API</h2>
172
+
173
+ <section
174
+ v-for="(component, componentName) in componentsProperties"
175
+ :key="componentName"
176
+ >
177
+ <h3 class="mt-10 dark:text-gray-300 text-gray-800 text-2xl border-b-2 dark:border-gray-600 pb-2">
178
+ {{ componentName }}
179
+ </h3>
180
+ <div
181
+ v-for="(properties, propertyName) in component"
182
+ :key="propertyName"
183
+ >
184
+ <div>
185
+ <h4 class="mt-6 mb-2 text-gray-800 dark:text-gray-300 text-xl capitalize">
186
+ {{ propertyName }}
187
+ </h4>
188
+
189
+ <div class="text-sm font-light">
190
+ <x-table
191
+ :headers="propertyName === 'props' ? headers : headersSimple"
192
+ :items="properties"
193
+ >
194
+ <template #item-name="{ item }">
195
+ <div class="text-primary-500">{{ item.name }}</div>
196
+ </template>
197
+ <template #item-type="{ item }">
198
+ <div v-for="t in item.type" :key="t">{{ t }}</div>
199
+ </template>
200
+ <template #item-required="{ item }">
201
+ <div>{{ item.required ? 'true' : '' }}</div>
202
+ </template>
203
+ <template #item-validator="{ item }">
204
+ <div class="space-x-2">
205
+ <span v-for="validator in item.validator" :key="validator">{{ validator }}</span>
206
+ </div>
207
+ </template>
208
+ </x-table>
209
+ </div>
210
+ </div>
211
+ </div>
212
+
213
+ </section>
214
+ </div>
215
+ </div>
216
+
217
+ <div class="flex my-10">
218
+ <x-button
219
+ v-if="back"
220
+ :to="back"
221
+ outlined
222
+ class="capitalize"
223
+ icon="arrow-left"
224
+ >{{ back }}</x-button>
225
+ <x-spacer/>
226
+ <x-button
227
+ v-if="next"
228
+ :to="next"
229
+ outlined
230
+ class="capitalize"
231
+ icon-right="arrow-right"
232
+ >{{ next }}</x-button>
233
+ </div>
234
+ </div>
235
+
236
+ <div v-if="anchors.length > 0" class="hidden xl:text-sm xl:block flex-none w-64 pl-8 mr-8">
237
+ <div class="flex flex-col justify-between overflow-y-auto sticky max-h-(screen-18) pt-10 pb-6 top-0">
238
+ <div class="mb-8">
239
+ <h5 class="text-gray-900 dark:text-gray-100 uppercase tracking-wide font-semibold mb-3 text-sm lg:text-xs">On this page</h5>
240
+ <ul class="overflow-x-hidden text-gray-500 dark:text-gray-400 font-medium">
241
+ <li v-for="(anchor, index) in anchors" :key="index">
242
+ <a
243
+ :href="`#${anchor.id}`"
244
+ class="block transform transition-colors duration-200 py-2 hover:text-gray-900"
245
+ :class="{
246
+ 'text-gray-900 dark:text-gray-200': anchor.id === currentAnchor,
247
+ }"
248
+ >
249
+ {{ anchor.name }}
250
+ </a>
251
+ </li>
252
+ </ul>
253
+ </div>
254
+ </div>
255
+ </div>
256
+ </div>
257
+ </section>
258
+ </div>
259
+ </template>
260
+
261
+ <style lang="postcss">
262
+ .document-page {
263
+ h1,
264
+ h2,
265
+ h3 {
266
+ position: relative;
267
+ }
268
+
269
+ h2 {
270
+ @apply text-xl font-semibold mb-4 mt-8;
271
+ }
272
+
273
+ h1 .anchor,
274
+ h2 .anchor,
275
+ h3 .anchor {
276
+ position: absolute;
277
+ left: -24px;
278
+ width: 30px;
279
+ display: none;
280
+ color: #96a1b3 !important;
281
+ }
282
+
283
+ h1:hover .anchor,
284
+ h2:hover .anchor,
285
+ h3:hover .anchor {
286
+ display: block;
287
+ }
288
+ }
289
+ </style>