vueless 0.0.504 → 0.0.506

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 (38) hide show
  1. package/package.json +1 -1
  2. package/types.ts +6 -0
  3. package/ui.button/UButton.vue +106 -240
  4. package/ui.button/config.ts +167 -0
  5. package/ui.button/storybook/Docs.mdx +2 -2
  6. package/ui.button/storybook/{stories.js → stories.ts} +36 -16
  7. package/ui.button/types.ts +121 -0
  8. package/ui.button/{useAttrs.js → useAttrs.ts} +6 -3
  9. package/ui.button-link/ULink.vue +72 -223
  10. package/ui.button-link/storybook/Docs.mdx +2 -2
  11. package/ui.button-link/storybook/{stories.js → stories.ts} +30 -17
  12. package/ui.button-link/types.ts +131 -0
  13. package/ui.button-link/{useAttrs.js → useAttrs.ts} +15 -3
  14. package/ui.button-toggle/UToggle.vue +47 -165
  15. package/ui.button-toggle/storybook/Docs.mdx +2 -2
  16. package/ui.button-toggle/storybook/{stories.js → stories.ts} +13 -5
  17. package/ui.button-toggle/types.ts +85 -0
  18. package/ui.button-toggle/useAttrs.ts +18 -0
  19. package/ui.button-toggle-item/UToggleItem.vue +59 -110
  20. package/ui.button-toggle-item/storybook/Docs.mdx +2 -2
  21. package/ui.button-toggle-item/storybook/{stories.js → stories.ts} +10 -3
  22. package/ui.button-toggle-item/types.ts +40 -0
  23. package/ui.button-toggle-item/{useAttrs.js → useAttrs.ts} +16 -4
  24. package/ui.image-icon/UIcon.vue +1 -1
  25. package/ui.image-icon/config.ts +5 -4
  26. package/ui.loader/ULoader.vue +1 -1
  27. package/ui.loader/config.js +2 -1
  28. package/ui.loader-overlay/ULoaderOverlay.vue +1 -1
  29. package/web-types.json +137 -59
  30. package/ui.button/config.js +0 -164
  31. package/ui.button-toggle/useAttrs.js +0 -15
  32. /package/ui.button/{constants.js → constants.ts} +0 -0
  33. /package/ui.button-link/{config.js → config.ts} +0 -0
  34. /package/ui.button-link/{constants.js → constants.ts} +0 -0
  35. /package/ui.button-toggle/{config.js → config.ts} +0 -0
  36. /package/ui.button-toggle/{constants.js → constants.ts} +0 -0
  37. /package/ui.button-toggle-item/{config.js → config.ts} +0 -0
  38. /package/ui.button-toggle-item/{constants.js → constants.ts} +0 -0
@@ -1,122 +1,22 @@
1
- <template>
2
- <UButton
3
- tabindex="0"
4
- :for="elementId"
5
- :no-ring="!getToggleSeparated()"
6
- color="grayscale"
7
- variant="secondary"
8
- :label="label"
9
- :size="getToggleSize()"
10
- :round="getToggleRound()"
11
- :block="getToggleBlock()"
12
- :square="getToggleSquare()"
13
- :disabled="getToggleDisabled()"
14
- v-bind="toggleButtonAttrs"
15
- @click="onClickSetValue"
16
- >
17
- <template #left>
18
- <!-- @slot Use it to add something before the label. -->
19
- <slot name="left" />
20
- </template>
21
-
22
- <!-- @slot Use it to add something instead of the label. -->
23
- <template #default>
24
- <input
25
- :id="elementId"
26
- v-model="selectedItem"
27
- :name="getToggleName()"
28
- :type="getToggleType()"
29
- :value="value"
30
- :disabled="getToggleDisabled()"
31
- v-bind="toggleInputAttrs"
32
- />
33
-
34
- <!--
35
- @slot Use it to add something instead of the label.
36
- @binding {string} label
37
- -->
38
- <slot name="default" :label="label">
39
- {{ label }}
40
- </slot>
41
- </template>
42
-
43
- <template #right>
44
- <!-- @slot Use it to add something after the label. -->
45
- <slot name="right" />
46
- </template>
47
- </UButton>
48
- </template>
49
-
50
- <script setup>
1
+ <script lang="ts" setup>
51
2
  import { computed, inject, onMounted, ref, useId } from "vue";
52
3
 
53
4
  import UButton from "../ui.button/UButton.vue";
54
5
  import { getDefault } from "../utils/ui.ts";
55
6
 
56
- import { TYPE_RADIO } from "../ui.button-toggle/constants.js";
7
+ import { TYPE_RADIO } from "../ui.button-toggle/constants.ts";
57
8
 
58
- import useAttrs from "./useAttrs.js";
59
- import defaultConfig from "./config.js";
60
- import { UToggleItem } from "./constants.js";
9
+ import useAttrs from "./useAttrs.ts";
10
+ import defaultConfig from "./config.ts";
11
+ import { UToggleItem } from "./constants.ts";
61
12
 
62
- defineOptions({ inheritAttrs: false });
63
-
64
- const props = defineProps({
65
- /**
66
- * Selected value.
67
- */
68
- modelValue: {
69
- type: [String, Number, Array],
70
- default: "",
71
- },
13
+ import type { UToggleItemProps } from "./types.ts";
72
14
 
73
- /**
74
- * Value for checkbox state.
75
- */
76
- value: {
77
- type: [String, Number],
78
- default: "",
79
- },
80
-
81
- /**
82
- * Toggle item label.
83
- */
84
- label: {
85
- type: String,
86
- default: "",
87
- },
88
-
89
- /**
90
- * Make toggle item disabled.
91
- */
92
- disabled: {
93
- type: Boolean,
94
- default: getDefault(defaultConfig, UToggleItem).disabled,
95
- },
96
-
97
- /**
98
- * Unique element id.
99
- */
100
- id: {
101
- type: String,
102
- default: "",
103
- },
104
-
105
- /**
106
- * Component config object.
107
- */
108
- config: {
109
- type: Object,
110
- default: () => ({}),
111
- },
15
+ defineOptions({ inheritAttrs: false });
112
16
 
113
- /**
114
- * Data-test attribute for automated testing.
115
- */
116
- dataTest: {
117
- type: String,
118
- default: "",
119
- },
17
+ const props = withDefaults(defineProps<UToggleItemProps>(), {
18
+ disabled: getDefault<UToggleItemProps>(defaultConfig, UToggleItem).disabled,
19
+ dataTest: "",
120
20
  });
121
21
 
122
22
  const emit = defineEmits([
@@ -175,3 +75,52 @@ function onClickSetValue() {
175
75
  emit("update:modelValue", props.value);
176
76
  }
177
77
  </script>
78
+
79
+ <template>
80
+ <UButton
81
+ tabindex="0"
82
+ :for="elementId"
83
+ :no-ring="!getToggleSeparated()"
84
+ color="grayscale"
85
+ variant="secondary"
86
+ :label="label"
87
+ :size="getToggleSize()"
88
+ :round="getToggleRound()"
89
+ :block="getToggleBlock()"
90
+ :square="getToggleSquare()"
91
+ :disabled="getToggleDisabled()"
92
+ v-bind="toggleButtonAttrs"
93
+ @click="onClickSetValue"
94
+ >
95
+ <template #left>
96
+ <!-- @slot Use it to add something before the label. -->
97
+ <slot name="left" />
98
+ </template>
99
+
100
+ <!-- @slot Use it to add something instead of the label. -->
101
+ <template #default>
102
+ <input
103
+ :id="elementId"
104
+ v-model="selectedItem"
105
+ :name="getToggleName()"
106
+ :type="getToggleType()"
107
+ :value="value"
108
+ :disabled="getToggleDisabled()"
109
+ v-bind="toggleInputAttrs"
110
+ />
111
+
112
+ <!--
113
+ @slot Use it to add something instead of the label.
114
+ @binding {string} label
115
+ -->
116
+ <slot name="default" :label="label">
117
+ {{ label }}
118
+ </slot>
119
+ </template>
120
+
121
+ <template #right>
122
+ <!-- @slot Use it to add something after the label. -->
123
+ <slot name="right" />
124
+ </template>
125
+ </UButton>
126
+ </template>
@@ -1,8 +1,8 @@
1
1
  import { Meta, Title, Subtitle, Description, Primary, Controls, Stories, Source } from "@storybook/blocks";
2
2
  import { getSource } from "../../utils/storybook.ts";
3
3
 
4
- import * as stories from "./stories.js";
5
- import defaultConfig from "../config.js?raw"
4
+ import * as stories from "./stories.ts";
5
+ import defaultConfig from "../config.ts?raw"
6
6
 
7
7
  <Meta of={stories} />
8
8
  <Title of={stories} />
@@ -3,6 +3,13 @@ import { getArgTypes, getSlotNames, getSlotsFragment } from "../../utils/storybo
3
3
  import UToggleItem from "../../ui.button-toggle-item/UToggleItem.vue";
4
4
  import UIcon from "../../ui.image-icon/UIcon.vue";
5
5
 
6
+ import type { Meta, StoryFn } from "@storybook/vue3";
7
+ import type { UToggleItemProps } from "../types.ts";
8
+
9
+ interface UToggleItemArgs extends UToggleItemProps {
10
+ slotTemplate?: string;
11
+ }
12
+
6
13
  /**
7
14
  * The `UToggleItem` component. | [View on GitHub](https://github.com/vuelessjs/vueless/tree/main/src/ui.button-toggle-item)
8
15
  */
@@ -18,9 +25,9 @@ export default {
18
25
  ...getArgTypes(UToggleItem.__name),
19
26
  value: { control: { type: "text" } },
20
27
  },
21
- };
28
+ } as Meta;
22
29
 
23
- const DefaultTemplate = (args) => ({
30
+ const DefaultTemplate: StoryFn<UToggleItemArgs> = (args: UToggleItemArgs) => ({
24
31
  components: { UToggleItem, UIcon },
25
32
  setup() {
26
33
  const slots = getSlotNames(UToggleItem.__name);
@@ -33,7 +40,7 @@ const DefaultTemplate = (args) => ({
33
40
  v-model="args.modelValue"
34
41
  name="toggle"
35
42
  >
36
- ${args.slotTemplate || getSlotsFragment()}
43
+ ${args.slotTemplate || getSlotsFragment("")}
37
44
  </UToggleItem>
38
45
  `,
39
46
  });
@@ -0,0 +1,40 @@
1
+ import defaultConfig from "./config.ts";
2
+
3
+ export type Config = Partial<typeof defaultConfig>;
4
+
5
+ export interface UToggleItemProps {
6
+ /**
7
+ * Selected value.
8
+ */
9
+ modelValue?: string | number | Array<string | number>;
10
+
11
+ /**
12
+ * Value for checkbox state.
13
+ */
14
+ value?: string | number;
15
+
16
+ /**
17
+ * Toggle item label.
18
+ */
19
+ label?: string;
20
+
21
+ /**
22
+ * Make toggle item disabled.
23
+ */
24
+ disabled?: boolean;
25
+
26
+ /**
27
+ * Unique element id.
28
+ */
29
+ id?: string;
30
+
31
+ /**
32
+ * Component config object.
33
+ */
34
+ config?: Partial<typeof defaultConfig>;
35
+
36
+ /**
37
+ * Data-test attribute for automated testing.
38
+ */
39
+ dataTest?: string;
40
+ }
@@ -1,10 +1,22 @@
1
- import { computed, toValue } from "vue";
1
+ import { computed, toValue, type Ref } from "vue";
2
2
  import useUI from "../composables/useUI.ts";
3
3
 
4
- import defaultConfig from "./config.js";
4
+ import defaultConfig from "./config.ts";
5
5
 
6
- export default function useAttrs(props, { isSelected, separated, variant }) {
7
- const { config, getKeysAttrs, hasSlotContent, getExtendingKeysClasses } = useUI(
6
+ import type { UseAttrs } from "../types.ts";
7
+ import type { UToggleItemProps, Config } from "./types.ts";
8
+
9
+ type itemState = {
10
+ isSelected: Ref<boolean>;
11
+ separated: Ref<boolean>;
12
+ variant: string;
13
+ };
14
+
15
+ export default function useAttrs(
16
+ props: UToggleItemProps,
17
+ { isSelected, separated, variant }: itemState,
18
+ ): UseAttrs<Config> {
19
+ const { config, getKeysAttrs, hasSlotContent, getExtendingKeysClasses } = useUI<Config>(
8
20
  defaultConfig,
9
21
  () => props.config,
10
22
  );
@@ -41,7 +41,7 @@ const props = defineProps({
41
41
 
42
42
  /**
43
43
  * Icon color.
44
- * @values brand, grayscale, gray, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose, white
44
+ * @values brand, grayscale, gray, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose, black, white
45
45
  */
46
46
  color: {
47
47
  type: String,
@@ -3,13 +3,14 @@ export default /*tw*/ {
3
3
  base: "fill-current outline-0 shrink-0 grow-0",
4
4
  variants: {
5
5
  variant: {
6
- light: "text-{color}-400",
7
- default: "text-{color}-600",
8
- dark: "text-{color}-800",
6
+ light: "text-{color}-400 dark:text-{color}-200",
7
+ default: "text-{color}-600 dark:text-{color}-400",
8
+ dark: "text-{color}-800 dark:text-{color}-600",
9
9
  },
10
10
  color: {
11
11
  white: "text-white",
12
- grayscale: "text-gray-900",
12
+ black: "text-gray-900",
13
+ grayscale: "text-gray-900 dark:text-white",
13
14
  },
14
15
  interactive: {
15
16
  true: "cursor-pointer",
@@ -29,7 +29,7 @@ const props = defineProps({
29
29
 
30
30
  /**
31
31
  * Loader color.
32
- * @values brand, grayscale, gray, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose, white
32
+ * @values brand, grayscale, gray, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose, black, white
33
33
  */
34
34
  color: {
35
35
  type: String,
@@ -20,7 +20,8 @@ export default /*tw*/ {
20
20
  variants: {
21
21
  color: {
22
22
  white: "bg-white",
23
- grayscale: "bg-gray-900",
23
+ black: "bg-gray-900",
24
+ grayscale: "bg-gray-900 dark:bg-white",
24
25
  },
25
26
  size: {
26
27
  sm: `
@@ -38,7 +38,7 @@ const props = defineProps({
38
38
 
39
39
  /**
40
40
  * Loader color.
41
- * @values brand, grayscale, gray, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose, white
41
+ * @values brand, grayscale, gray, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose, black, white
42
42
  */
43
43
  color: {
44
44
  type: String,