pukaad-ui-lib 1.307.0 → 1.309.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.
package/dist/module.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pukaad-ui-lib",
3
3
  "configKey": "pukaadUI",
4
- "version": "1.307.0",
4
+ "version": "1.309.0",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.2",
7
7
  "unbuild": "3.6.1"
@@ -4,16 +4,16 @@
4
4
  props.variant === 'text' || props.variant === 'link' ? '!p-0 !h-auto' : '',
5
5
  props.circle && 'rounded-full aspect-square',
6
6
  props.class
7
- ]" :variant="props.variant" :color="props.color" :size="resolvedSize" :type="props.type"
8
- :disabled="props.loading || props.disabled">
9
- <span class="inline-grid place-items-center">
10
- <span class="inline-flex items-center justify-center gap-[8px] [grid-area:1/1]"
11
- :class="{ invisible: props.loading }">
12
- <slot />
13
- </span>
14
- <ShadSpinner v-if="props.loading" class="[grid-area:1/1]" />
15
- </span>
16
- </ShadButton>
7
+ ]" :variant="props.variant" :color="props.color" :size="resolvedSize" :type="props.type"
8
+ :disabled="props.loading || props.disabled">
9
+ <span class="inline-grid place-items-center">
10
+ <span class="inline-flex items-center justify-center gap-[8px] [grid-area:1/1]"
11
+ :class="{ invisible: props.loading }">
12
+ <slot />
13
+ </span>
14
+ <ShadSpinner v-if="props.loading" class="[grid-area:1/1]" />
15
+ </span>
16
+ </ShadButton>
17
17
  </template>
18
18
 
19
19
  <script setup>
@@ -21,6 +21,7 @@ export interface InputDatePickerProps {
21
21
  isDateDisabled?: (date: DateValue) => boolean;
22
22
  defaultPlaceholder?: DateValue;
23
23
  reverseYears?: boolean;
24
+ variant?: "default" | "button";
24
25
  }
25
26
  type __VLS_Props = InputDatePickerProps;
26
27
  type __VLS_ModelProps = {
@@ -38,6 +39,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
38
39
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
39
40
  "onUpdate:modelValue"?: ((value: Date | undefined) => any) | undefined;
40
41
  }>, {
42
+ variant: "default" | "button";
41
43
  disabled: boolean;
42
44
  required: boolean;
43
45
  id: string;
@@ -6,7 +6,7 @@
6
6
  v-slot="{ errorMessage }"
7
7
  v-model="modelValue"
8
8
  >
9
- <ShadFormItem>
9
+ <ShadFormItem :class="cn('flex flex-col w-full', props.class)">
10
10
  <ShadFormLabel v-if="props.label || $slots.label" class="w-full">
11
11
  <slot name="label">
12
12
  <div class="flex-1">
@@ -25,26 +25,37 @@
25
25
  :disabled="props.disabled"
26
26
  :class="
27
27
  cn(
28
- 'w-full flex items-center justify-between gap-2 font-body-large',
29
- errorMessage && 'border-destructive hover:border-destructive',
30
- props.class
28
+ 'w-full flex items-center gap-2 font-body-large',
29
+ !modelValue && props.variant === 'button' ? 'justify-center' : 'justify-between',
30
+ errorMessage && 'border-destructive hover:border-destructive'
31
31
  )
32
32
  "
33
33
  >
34
- <span v-if="modelValue">{{ formattedDate }}</span>
35
- <span v-else class="text-cloud">{{ placeholder }}</span>
36
- <Icon
37
- v-if="modelValue"
38
- name="lucide:x"
39
- :size="16"
40
- class="!pointer-events-auto cursor-pointer"
41
- @click.stop.prevent="clearDate"
42
- />
43
- <Icon v-else name="lucide:calendar" :size="16" />
34
+ <!-- Filled State -->
35
+ <template v-if="modelValue">
36
+ <span>{{ formattedDate }}</span>
37
+ <Icon
38
+ name="lucide:x"
39
+ :size="16"
40
+ class="!pointer-events-auto cursor-pointer shrink-0"
41
+ @click.stop.prevent="clearDate"
42
+ />
43
+ </template>
44
+
45
+ <!-- Empty State: button mode -->
46
+ <template v-else-if="props.variant === 'button'">
47
+ <span>{{ placeholder }}</span>
48
+ </template>
49
+
50
+ <!-- Empty State: default mode -->
51
+ <template v-else>
52
+ <span class="text-cloud">{{ placeholder }}</span>
53
+ <Icon name="lucide:calendar" :size="16" class="shrink-0" />
54
+ </template>
44
55
  </Button>
45
56
  </PopoverTrigger>
46
57
  <PopoverContent class="w-auto p-0" align="start">
47
- <div :class="cn('sm:flex', showTime && 'flex-row')">
58
+ <div :class="cn('sm:flex', props.showTime && 'flex-row')">
48
59
  <Calendar
49
60
  v-model="calendarValue"
50
61
  initial-focus
@@ -58,7 +69,7 @@
58
69
  />
59
70
  <!-- Time Picker -->
60
71
  <div
61
- v-if="showTime"
72
+ v-if="props.showTime"
62
73
  class="flex flex-col sm:flex-row sm:h-[300px] divide-y sm:divide-y-0 sm:divide-x sm:border-t-0"
63
74
  >
64
75
  <!-- Hours -->
@@ -144,7 +155,8 @@ const props = defineProps({
144
155
  minValue: { type: Date, required: false },
145
156
  isDateDisabled: { type: Function, required: false },
146
157
  defaultPlaceholder: { type: null, required: false },
147
- reverseYears: { type: Boolean, required: false }
158
+ reverseYears: { type: Boolean, required: false },
159
+ variant: { type: String, required: false, default: "default" }
148
160
  });
149
161
  const maxCalendarValue = computed(() => {
150
162
  if (!props.maxValue) return void 0;
@@ -21,6 +21,7 @@ export interface InputDatePickerProps {
21
21
  isDateDisabled?: (date: DateValue) => boolean;
22
22
  defaultPlaceholder?: DateValue;
23
23
  reverseYears?: boolean;
24
+ variant?: "default" | "button";
24
25
  }
25
26
  type __VLS_Props = InputDatePickerProps;
26
27
  type __VLS_ModelProps = {
@@ -38,6 +39,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
38
39
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
39
40
  "onUpdate:modelValue"?: ((value: Date | undefined) => any) | undefined;
40
41
  }>, {
42
+ variant: "default" | "button";
41
43
  disabled: boolean;
42
44
  required: boolean;
43
45
  id: string;
@@ -25,9 +25,9 @@ const emit = defineEmits(["profile-edit", "profile-share", "profile-follower-del
25
25
  const props = defineProps({
26
26
  state: { type: String, required: false },
27
27
  profileDetail: { type: Object, required: false },
28
+ circle: { type: Boolean, required: false },
28
29
  items: { type: Array, required: false },
29
30
  variant: { type: null, required: false },
30
- circle: { type: Boolean, required: false },
31
31
  horizontal: { type: Boolean, required: false },
32
32
  size: { type: null, required: false },
33
33
  iconSize: { type: String, required: false },
@@ -2,10 +2,11 @@
2
2
  <ShadDropdownMenu v-model:open="open">
3
3
  <ShadDropdownMenuTrigger as-child>
4
4
  <Button
5
- :variant="props.variant"
5
+ :variant="resolvedVariant"
6
6
  :size="props.size"
7
+ :circle="props.circle"
7
8
  :class="[
8
- props.circle ? 'rounded-full' : 'rounded-md',
9
+ props.circle && 'size-[32px]',
9
10
  props.disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer',
10
11
  props.disabledPadding ? 'p-0' : '',
11
12
  props.triggerClass
@@ -35,6 +36,7 @@
35
36
  </template>
36
37
 
37
38
  <script setup>
39
+ import { computed } from "vue";
38
40
  const open = defineModel("open", { type: Boolean, ...{ default: false } });
39
41
  const props = defineProps({
40
42
  items: { type: Array, required: false, default: () => [] },
@@ -47,6 +49,9 @@ const props = defineProps({
47
49
  disabled: { type: Boolean, required: false, default: false },
48
50
  triggerClass: { type: String, required: false }
49
51
  });
52
+ const resolvedVariant = computed(
53
+ () => props.circle ? "default" : props.variant
54
+ );
50
55
  const onAction = (item) => {
51
56
  item.action();
52
57
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pukaad-ui-lib",
3
- "version": "1.307.0",
3
+ "version": "1.309.0",
4
4
  "description": "pukaad-ui for MeMSG",
5
5
  "repository": {
6
6
  "type": "git",