ui-thing 0.1.34 → 0.1.36
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/CHANGELOG.md +33 -0
- package/dist/index.js +327 -57
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
- package/src/comps.ts +33 -14
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ui-thing",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.36",
|
|
4
4
|
"description": "CLI used to add Nuxt 3 components to a project",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"test": "vitest"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"axios": "^1.7.
|
|
41
|
+
"axios": "^1.7.8",
|
|
42
42
|
"boxen": "^8.0.1",
|
|
43
43
|
"build": "^0.1.4",
|
|
44
44
|
"c12": "^2.0.1",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"fs-extra": "^11.2.0",
|
|
50
50
|
"kleur": "^4.1.5",
|
|
51
51
|
"lodash": "^4.17.21",
|
|
52
|
-
"nypm": "^0.
|
|
52
|
+
"nypm": "^0.4.1",
|
|
53
53
|
"ora": "^8.1.1",
|
|
54
54
|
"prompts": "^2.4.2"
|
|
55
55
|
},
|
|
@@ -59,13 +59,13 @@
|
|
|
59
59
|
"@types/figlet": "^1.7.0",
|
|
60
60
|
"@types/fs-extra": "^11.0.4",
|
|
61
61
|
"@types/lodash": "^4.17.13",
|
|
62
|
-
"@types/node": "^22.
|
|
62
|
+
"@types/node": "^22.10.1",
|
|
63
63
|
"@types/prompts": "^2.4.9",
|
|
64
|
-
"@vitest/coverage-v8": "^2.1.
|
|
64
|
+
"@vitest/coverage-v8": "^2.1.6",
|
|
65
65
|
"magicast": "^0.3.5",
|
|
66
66
|
"tsup": "^8.3.5",
|
|
67
|
-
"typescript": "^5.
|
|
68
|
-
"vitest": "^2.1.
|
|
67
|
+
"typescript": "^5.7.2",
|
|
68
|
+
"vitest": "^2.1.6"
|
|
69
69
|
},
|
|
70
70
|
"publishConfig": {
|
|
71
71
|
"access": "public"
|
package/src/comps.ts
CHANGED
|
@@ -2196,7 +2196,7 @@ export default [
|
|
|
2196
2196
|
fileName: "Sidebar/Provider.vue",
|
|
2197
2197
|
dirPath: "components/UI",
|
|
2198
2198
|
fileContent:
|
|
2199
|
-
'<template>\n <UiTooltipProvider :delay-duration="0">\n <div\n :style="{\n \'--sidebar-width\': SIDEBAR_WIDTH,\n \'--sidebar-width-icon\': SIDEBAR_WIDTH_ICON,\n }"\n :class="sideBarProviderStyles({ class: props.class })"\n >\n <slot />\n </div>\n </UiTooltipProvider>\n</template>\n\n<script lang="ts">\n import type { HTMLAttributes, Ref } from "vue";\n\n export const sideBarProviderStyles = tv({\n base: "group/sidebar-wrapper flex min-h-svh w-full text-sidebar-foreground has-[[data-variant=inset]]:bg-sidebar",\n });\n</script>\n\n<script setup lang="ts">\n const props = withDefaults(\n defineProps<{\n /**\n * Default open state of the sidebar.\n * @default true\n */\n defaultOpen?: boolean;\n /**\n * Open state of the sidebar (controlled).\n * @default undefined\n */\n open?: boolean;\n /**\n * Additional classes to apply to the parent element.\n */\n class?: HTMLAttributes["class"];\n }>(),\n {\n defaultOpen: true,\n open: undefined,\n }\n );\n\n // This sets the cookie to keep the sidebar state.\n const SIDEBAR_COOKIE = useCookie<boolean>(SIDEBAR_COOKIE_NAME, {\n path: "/",\n maxAge: SIDEBAR_COOKIE_MAX_AGE,\n default: () => false,\n });\n\n const emits = defineEmits<{\n "update:open": [open: boolean];\n }>();\n\n const isMobile = useMediaQuery("(max-width: 768px)");\n const openMobile = ref(false);\n\n const open = useVModel(props, "open", emits, {\n defaultValue: props.defaultOpen ? props.defaultOpen : SIDEBAR_COOKIE.value,\n passive: (props.open === undefined) as false,\n }) as Ref<boolean>;\n\n function setOpen(value: boolean) {\n open.value = value; // emits(\'update:open\', value)\n SIDEBAR_COOKIE.value = value;\n }\n\n function setOpenMobile(value: boolean) {\n openMobile.value = value;\n }\n\n // Helper to toggle the sidebar.\n function toggleSidebar() {\n return isMobile.value ? setOpenMobile(!openMobile.value) : setOpen(!open.value);\n }\n\n useEventListener("keydown", (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n });\n\n // We add a state so that we can do data-state="expanded" or "collapsed".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = computed(() => (open.value ? "expanded" : "collapsed"));\n\n provideSidebarContext({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n });\n</script>\n',
|
|
2199
|
+
'<template>\n <UiTooltipProvider :delay-duration="0">\n <div\n :style="{\n \'--sidebar-width\': SIDEBAR_WIDTH,\n \'--sidebar-width-icon\': SIDEBAR_WIDTH_ICON,\n }"\n :class="sideBarProviderStyles({ class: props.class })"\n >\n <slot v-bind="{ state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar }" />\n </div>\n </UiTooltipProvider>\n</template>\n\n<script lang="ts">\n import type { HTMLAttributes, Ref } from "vue";\n\n export const sideBarProviderStyles = tv({\n base: "group/sidebar-wrapper flex min-h-svh w-full text-sidebar-foreground has-[[data-variant=inset]]:bg-sidebar",\n });\n</script>\n\n<script setup lang="ts">\n const props = withDefaults(\n defineProps<{\n /**\n * Default open state of the sidebar.\n * @default true\n */\n defaultOpen?: boolean;\n /**\n * Open state of the sidebar (controlled).\n * @default undefined\n */\n open?: boolean;\n /**\n * Additional classes to apply to the parent element.\n */\n class?: HTMLAttributes["class"];\n }>(),\n {\n defaultOpen: true,\n open: undefined,\n }\n );\n\n // This sets the cookie to keep the sidebar state.\n const SIDEBAR_COOKIE = useCookie<boolean>(SIDEBAR_COOKIE_NAME, {\n path: "/",\n maxAge: SIDEBAR_COOKIE_MAX_AGE,\n default: () => false,\n });\n\n const emits = defineEmits<{\n "update:open": [open: boolean];\n }>();\n\n const isMobile = useMediaQuery("(max-width: 768px)");\n const openMobile = ref(false);\n\n const open = useVModel(props, "open", emits, {\n defaultValue: props.defaultOpen ? props.defaultOpen : SIDEBAR_COOKIE.value,\n passive: (props.open === undefined) as false,\n }) as Ref<boolean>;\n\n function setOpen(value: boolean) {\n open.value = value; // emits(\'update:open\', value)\n SIDEBAR_COOKIE.value = value;\n }\n\n function setOpenMobile(value: boolean) {\n openMobile.value = value;\n }\n\n // Helper to toggle the sidebar.\n function toggleSidebar() {\n return isMobile.value ? setOpenMobile(!openMobile.value) : setOpen(!open.value);\n }\n\n useEventListener("keydown", (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n });\n\n // We add a state so that we can do data-state="expanded" or "collapsed".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = computed(() => (open.value ? "expanded" : "collapsed"));\n\n provideSidebarContext({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n });\n</script>\n',
|
|
2200
2200
|
},
|
|
2201
2201
|
{
|
|
2202
2202
|
fileName: "Sidebar/Rail.vue",
|
|
@@ -2736,7 +2736,7 @@ export default [
|
|
|
2736
2736
|
plugins: [],
|
|
2737
2737
|
},
|
|
2738
2738
|
{
|
|
2739
|
-
name: "
|
|
2739
|
+
name: "Vee Checkbox",
|
|
2740
2740
|
value: "vee-checkbox",
|
|
2741
2741
|
deps: ["@vee-validate/nuxt", "@morev/vue-transitions"],
|
|
2742
2742
|
askValidator: true,
|
|
@@ -2755,7 +2755,7 @@ export default [
|
|
|
2755
2755
|
plugins: [],
|
|
2756
2756
|
},
|
|
2757
2757
|
{
|
|
2758
|
-
name: "
|
|
2758
|
+
name: "Vee CurrencyInput",
|
|
2759
2759
|
value: "vee-currency-input",
|
|
2760
2760
|
deps: ["@vee-validate/nuxt", "@morev/vue-transitions"],
|
|
2761
2761
|
askValidator: true,
|
|
@@ -2774,7 +2774,7 @@ export default [
|
|
|
2774
2774
|
plugins: [],
|
|
2775
2775
|
},
|
|
2776
2776
|
{
|
|
2777
|
-
name: "
|
|
2777
|
+
name: "Vee DateField",
|
|
2778
2778
|
value: "vee-date-field",
|
|
2779
2779
|
deps: ["@vee-validate/nuxt", "@morev/vue-transitions", "@internationalized/date"],
|
|
2780
2780
|
askValidator: true,
|
|
@@ -2793,7 +2793,7 @@ export default [
|
|
|
2793
2793
|
plugins: [],
|
|
2794
2794
|
},
|
|
2795
2795
|
{
|
|
2796
|
-
name: "
|
|
2796
|
+
name: "Vee Datepicker",
|
|
2797
2797
|
value: "vee-datepicker",
|
|
2798
2798
|
deps: ["@vee-validate/nuxt", "@morev/vue-transitions"],
|
|
2799
2799
|
askValidator: true,
|
|
@@ -2812,7 +2812,7 @@ export default [
|
|
|
2812
2812
|
plugins: [],
|
|
2813
2813
|
},
|
|
2814
2814
|
{
|
|
2815
|
-
name: "
|
|
2815
|
+
name: "Vee FileInput",
|
|
2816
2816
|
value: "vee-file-input",
|
|
2817
2817
|
deps: ["@vee-validate/nuxt", "@morev/vue-transitions"],
|
|
2818
2818
|
askValidator: true,
|
|
@@ -2831,7 +2831,7 @@ export default [
|
|
|
2831
2831
|
plugins: [],
|
|
2832
2832
|
},
|
|
2833
2833
|
{
|
|
2834
|
-
name: "
|
|
2834
|
+
name: "Vee Input",
|
|
2835
2835
|
value: "vee-input",
|
|
2836
2836
|
deps: ["@vee-validate/nuxt", "@morev/vue-transitions"],
|
|
2837
2837
|
askValidator: true,
|
|
@@ -2850,7 +2850,7 @@ export default [
|
|
|
2850
2850
|
plugins: [],
|
|
2851
2851
|
},
|
|
2852
2852
|
{
|
|
2853
|
-
name: "
|
|
2853
|
+
name: "Vee MultiSelect",
|
|
2854
2854
|
value: "vee-multi-select",
|
|
2855
2855
|
deps: ["@vee-validate/nuxt", "@morev/vue-transitions", "@vueform/multiselect"],
|
|
2856
2856
|
askValidator: true,
|
|
@@ -2869,7 +2869,7 @@ export default [
|
|
|
2869
2869
|
plugins: [],
|
|
2870
2870
|
},
|
|
2871
2871
|
{
|
|
2872
|
-
name: "
|
|
2872
|
+
name: "Vee NumberField",
|
|
2873
2873
|
value: "vee-number-field",
|
|
2874
2874
|
deps: ["@vee-validate/nuxt", "@morev/vue-transitions", "@internationalized/number"],
|
|
2875
2875
|
askValidator: true,
|
|
@@ -2888,7 +2888,7 @@ export default [
|
|
|
2888
2888
|
plugins: [],
|
|
2889
2889
|
},
|
|
2890
2890
|
{
|
|
2891
|
-
name: "Vee Pin
|
|
2891
|
+
name: "Vee Pin-Input",
|
|
2892
2892
|
value: "vee-pin-input",
|
|
2893
2893
|
deps: ["@vee-validate/nuxt", "@morev/vue-transitions"],
|
|
2894
2894
|
askValidator: true,
|
|
@@ -2907,7 +2907,7 @@ export default [
|
|
|
2907
2907
|
plugins: [],
|
|
2908
2908
|
},
|
|
2909
2909
|
{
|
|
2910
|
-
name: "
|
|
2910
|
+
name: "Vee RadioGroup",
|
|
2911
2911
|
value: "vee-radio-group",
|
|
2912
2912
|
deps: ["@vee-validate/nuxt", "@morev/vue-transitions"],
|
|
2913
2913
|
askValidator: true,
|
|
@@ -2926,7 +2926,7 @@ export default [
|
|
|
2926
2926
|
plugins: [],
|
|
2927
2927
|
},
|
|
2928
2928
|
{
|
|
2929
|
-
name: "
|
|
2929
|
+
name: "Vee Select",
|
|
2930
2930
|
value: "vee-select",
|
|
2931
2931
|
deps: ["@vee-validate/nuxt", "@morev/vue-transitions"],
|
|
2932
2932
|
askValidator: true,
|
|
@@ -2945,7 +2945,7 @@ export default [
|
|
|
2945
2945
|
plugins: [],
|
|
2946
2946
|
},
|
|
2947
2947
|
{
|
|
2948
|
-
name: "
|
|
2948
|
+
name: "Vee Tags-Input",
|
|
2949
2949
|
value: "vee-tags-input",
|
|
2950
2950
|
deps: ["@vee-validate/nuxt", "@morev/vue-transitions"],
|
|
2951
2951
|
askValidator: true,
|
|
@@ -2964,7 +2964,7 @@ export default [
|
|
|
2964
2964
|
plugins: [],
|
|
2965
2965
|
},
|
|
2966
2966
|
{
|
|
2967
|
-
name: "
|
|
2967
|
+
name: "Vee Textarea",
|
|
2968
2968
|
value: "vee-textarea",
|
|
2969
2969
|
deps: ["@vee-validate/nuxt", "@morev/vue-transitions"],
|
|
2970
2970
|
askValidator: true,
|
|
@@ -2982,6 +2982,25 @@ export default [
|
|
|
2982
2982
|
composables: [],
|
|
2983
2983
|
plugins: [],
|
|
2984
2984
|
},
|
|
2985
|
+
{
|
|
2986
|
+
name: "Vee VueFormSlider",
|
|
2987
|
+
value: "vee-vue-form-slider",
|
|
2988
|
+
deps: ["@vee-validate/nuxt", "@morev/vue-transitions", "@vueform/slider"],
|
|
2989
|
+
askValidator: true,
|
|
2990
|
+
nuxtModules: ["@vee-validate/nuxt", "@morev/vue-transitions/nuxt"],
|
|
2991
|
+
components: [],
|
|
2992
|
+
files: [
|
|
2993
|
+
{
|
|
2994
|
+
fileName: "Vee/VueFormSlider.vue",
|
|
2995
|
+
dirPath: "components/UI",
|
|
2996
|
+
fileContent:
|
|
2997
|
+
'<template>\n <Slider v-bind="{ ...forwarded, ...$attrs }" v-model="model" />\n <TransitionSlide group tag="div">\n <p v-if="hint && !errorMessage" key="hint" class="mt-1.5 text-sm text-muted-foreground">\n {{ hint }}\n </p>\n\n <p v-if="errorMessage" key="errorMessage" class="mt-1.5 text-sm text-destructive">\n {{ errorMessage }}\n </p>\n </TransitionSlide>\n</template>\n\n<script lang="ts">\n import Slider from "@vueform/slider";\n import { useForwardPropsEmits } from "radix-vue";\n\n export type SliderFormatObject = {\n /**\n * Prefix to prepend to the value.\n * @example "$"\n */\n prefix?: string;\n /**\n * Suffix to append to the value.\n * @example "USD"\n */\n suffix?: string;\n /**\n * Number of decimals to show.\n * @example 2\n */\n decimals?: number;\n /**\n * Character to use as thousand separator.\n * @example ","\n */\n thousand?: string;\n };\n\n export interface SliderProps {\n /**\n * The hint to display below the slider.\n */\n hint?: string;\n /**\n * The rules for the slider. Used with vee-validate for validation.\n */\n rules?: any;\n /**\n * Whether the slider should be validated on mount.\n */\n validateOnMount?: boolean;\n /**\n * The label of the slider. Used with vee-validate for error messages\n */\n label?: string;\n /**\n * The name we want to give this slider in the form.\n */\n name?: string;\n /**\n * The id attribute of slider container DOM.\n * @default "slider"\n */\n id?: string;\n /**\n * Whether to update v-model only when the slider value is set and not while dragging.\n *\n * If disabled you must not use inline objects as props (eg. format, options, classes) but outsource them to a data property.\n *\n * @default true\n */\n lazy?: boolean;\n /**\n * Whether the slider should be disabled.\n * @default false\n */\n disabled?: boolean;\n /**\n * Minimum value of the slider.\n * @default 0\n */\n min?: number;\n /**\n * Maximum value of the slider.\n * @default 100\n */\n max?: number;\n /**\n * The jump between intervals. If `-1` it enables fractions (eg. `1.23`).\n * @default 1\n */\n step?: number;\n /**\n * Whether tooltips should show above handlers.\n * @default true\n */\n tooltips?: boolean;\n /**\n * When tooltips should be shown.\n * @default "always"\n */\n showTooltip?: "always" | "focus" | "drag";\n /**\n * The step distance between two handles when their tooltips should be merged (when step is `-1` then `1` is assumed).\n *\n * @example\n *\n * ```js\n * { merge: 5, step: 10 }\n * // values: 0, <=50 will merge\n * // values: 0, 60 will not merge\n *\n * { merge: 5, step: -1 }\n *\n * // values: 0, <=5 will merge\n * // values: 0, 5.01 will not merge\n *\n * ```\n * @default -1\n */\n merge?: number;\n /**\n * Formats the tooltip.\n *\n * It can be either a function that receives a `value` param and expects a string or number as return or an object with the following properties:\n *\n *\n * prefix - eg $ -> $100\n *\n * suffix - eg USD -> 100USD\n *\n * decimals - eg 2 -> 100.00\n *\n * thousand - eg , - 1,000\n */\n format?: SliderFormatObject | ((value: number) => string | number);\n /**\n * The orientation of the slider.\n * @default "horizontal"\n */\n orientation?: "horizontal" | "vertical";\n /**\n * The direction of the slider.\n *\n * By default value increases left-to-right and top-to-bottom, which is reversed when using `rtl`.\n *\n * @default "ltr"\n */\n direction?: "ltr" | "rtl";\n /**\n * The position of the slider tooltips.\n *\n * Possible values: `null` | `top` | `bottom` | `left` | `right` depending on orientation prop.\n *\n * When null it equals to orientation default (`top` for `horizontal` and `left` for `vertical`).\n * @default null\n */\n tooltipPosition?: null | "top" | "bottom" | "left" | "right";\n /**\n * An object containing aria attributes to be added for each handle.\n */\n aria?: Record<string, any>;\n /**\n * Sets the aria-labelledby attribute of handles.\n */\n ariaLabelledby?: string;\n /**\n * Additional options for noUiSlider.\n * @see https://refreshless.com/nouislider/slider-options/\n */\n options?: Record<string, any>;\n /**\n * Initial value of the slider.\n */\n modelValue?: any;\n value?: any;\n /**\n * An object of class names that gets merged with the default values\n */\n classes?: Record<string, any>;\n }\n\n export type SliderEmits = {\n /**\n * Emitted when dragging the slider is finished or it\'s value changed by clicking, keyboard or programmatically set.\n */\n change: [v: any];\n /**\n * Emitted in the same scenarios as in `@change`, but also when the slider is being dragged if `lazy` option is disabled.\n */\n update: [v: any];\n /**\n * Emitted in the same scenarios as in `@change`, but also when the slider\'s `.set()` method is called.\n */\n set: [v: any];\n /**\n * Emitted while the slider moves.\n */\n slide: [v: any];\n /**\n * Emitted the slider connect moves while dragging.\n */\n drag: [v: any];\n /**\n * Emitted when the handle is activated and dragging started.\n */\n start: [v: any];\n /**\n * Emitted when the dragging ended.\n */\n end: [v: any];\n };\n</script>\n<script lang="ts" setup>\n defineOptions({ inheritAttrs: false });\n const props = defineProps<SliderProps>();\n\n const emits = defineEmits<SliderEmits>();\n\n const forwarded = useForwardPropsEmits(props, emits);\n\n const { errorMessage, value: model } = useField(\n () => props.name || props.id || useId(),\n props.rules,\n {\n initialValue: props.modelValue,\n label: props.label,\n validateOnMount: props.validateOnMount,\n syncVModel: true,\n }\n );\n</script>\n\n<style src="@vueform/slider/themes/default.css"></style>\n\n<style>\n :root {\n --slider-bg: theme(colors.muted.DEFAULT);\n --slider-connect-bg: theme(colors.primary.DEFAULT);\n --slider-connect-bg-disabled: theme(colors.primary.DEFAULT/45%);\n --slider-height: 8px;\n --slider-vertical-height: 300px;\n --slider-radius: 999999px;\n\n --slider-handle-bg: #ffffff;\n --slider-handle-border: 0;\n --slider-handle-width: 20px;\n --slider-handle-height: 20px;\n --slider-handle-radius: 99999px;\n --slider-handle-shadow: 0.5px 0.5px 2px 1px rgba(0, 0, 0, 0.32);\n --slider-handle-shadow-active: 0.5px 0.5px 2px 1px rgba(0, 0, 0, 0.42);\n --slider-handle-ring-width: 3px;\n --slider-handle-ring-color: theme(colors.primary.DEFAULT/20%);\n\n --slider-tooltip-font-size: 0.875rem;\n --slider-tooltip-line-height: 1.25rem;\n --slider-tooltip-font-weight: 600;\n --slider-tooltip-min-width: 24px;\n --slider-tooltip-bg: theme(colors.primary.DEFAULT);\n --slider-tooltip-bg-disabled: theme(colors.primary.DEFAULT/90%);\n --slider-tooltip-color: theme(colors.primary.foreground);\n --slider-tooltip-radius: theme(borderRadius.sm);\n --slider-tooltip-py: 2px;\n --slider-tooltip-px: 6px;\n --slider-tooltip-arrow-size: 5px;\n --slider-tooltip-distance: 4px;\n }\n</style>\n',
|
|
2998
|
+
},
|
|
2999
|
+
],
|
|
3000
|
+
utils: [],
|
|
3001
|
+
composables: [],
|
|
3002
|
+
plugins: [],
|
|
3003
|
+
},
|
|
2985
3004
|
{
|
|
2986
3005
|
name: "Vue Sonner",
|
|
2987
3006
|
value: "vue-sonner",
|