vueless 0.0.258 → 0.0.260

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.
@@ -89,7 +89,7 @@ export default function useUI(defaultConfig = {}, propsConfigGetter = null, topL
89
89
  const isTopLevelClassKey = configKey === (topLevelClassKey || firstClassKey);
90
90
  const attrClass = isTopLevelClassKey && !nestedComponent ? attrs.class : "";
91
91
 
92
- // TODO: remove `getBaseClasses(configKeyValue)` after migration to `setDynamicVars`
92
+ // TODO: remove `getBaseClasses(configKeyValue)` after migration of all composables to the new logic
93
93
  vuelessAttrs.value = {
94
94
  ...commonAttrs,
95
95
  class: cx([
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vueless",
3
- "version": "0.0.258",
3
+ "version": "0.0.260",
4
4
  "license": "MIT",
5
5
  "description": "Vue Styleless Component Framework.",
6
6
  "homepage": "https://vueless.com",
@@ -6,7 +6,7 @@ export default /*tw*/ {
6
6
  border border-solid transition
7
7
  focus:ring-{color}-700/15 focus:ring-dynamic focus:ring-offset-dynamic
8
8
  focus-within:ring-{color}-700/15 focus-within:ring-dynamic focus-within:ring-offset-dynamic
9
- disabled:ring-0 disabled:cursor-no-drop
9
+ disabled:ring-0 disabled:cursor-not-allowed
10
10
  `,
11
11
  variants: {
12
12
  size: {
@@ -36,15 +36,15 @@ export default /*tw*/ {
36
36
  thirdary: `
37
37
  border-transparent
38
38
  text-{color}-600
39
- hover:text-{color}-700 hover:bg-{color}-700 hover:bg-opacity-10
40
- focus:text-{color}-700 focus:bg-{color}-700 focus:bg-opacity-10
41
- active:text-{color}-800 active:bg-{color}-800 active:bg-opacity-15
39
+ hover:text-{color}-700 hover:bg-{color}-700/10
40
+ focus:text-{color}-700 focus:bg-{color}-700/10
41
+ active:text-{color}-800 active:bg-{color}-800/15
42
42
  disabled:text-{color}-300
43
43
  `,
44
44
  },
45
45
  color: {
46
46
  grayscale: "focus:ring-gray-700/15 focus-within:ring-gray-700/15 disabled:text-gray-400",
47
- white: "focus:ring-gray-800/15 focus-within:ring-gray-800/15 disabled:text-gray-400",
47
+ white: "focus:ring-gray-700/15 focus-within:ring-gray-700/15 disabled:text-gray-400",
48
48
  },
49
49
  loading: {
50
50
  true: "pointer-events-none gap-0",
@@ -88,9 +88,9 @@ export default /*tw*/ {
88
88
  variant: "thirdary",
89
89
  class: `
90
90
  text-gray-900
91
- hover:text-gray-800 hover:bg-gray-800
92
- focus:text-gray-800 focus:bg-gray-800
93
- active:text-gray-700 active:bg-gray-700
91
+ hover:text-gray-800 hover:bg-gray-800/15
92
+ focus:text-gray-800 focus:bg-gray-800/15
93
+ active:text-gray-700 active:bg-gray-700/20
94
94
  disabled:bg-transparent
95
95
  `,
96
96
  },
@@ -125,13 +125,8 @@ export default /*tw*/ {
125
125
  disabled:bg-transparent
126
126
  `,
127
127
  },
128
- { filled: true, variant: "thirdary", class: "bg-{color}-700 bg-opacity-10" },
129
- {
130
- filled: true,
131
- variant: "thirdary",
132
- color: "grayscale",
133
- class: "bg-gray-800 bg-opacity-10 hover:bg-opacity-15 focus:bg-opacity-15 active:bg-opacity-20",
134
- },
128
+ { filled: true, variant: "thirdary", class: "bg-{color}-700/10" },
129
+ { filled: true, variant: "thirdary", color: "grayscale", class: "bg-gray-900/10" },
135
130
  { filled: true, variant: "thirdary", color: "white", class: "bg-gray-50" },
136
131
  { iconLeft: true, size: "2xs", class: "pl-1" },
137
132
  { iconLeft: true, size: "xs", class: "pl-2" },
@@ -2,7 +2,7 @@ export default /*tw*/ {
2
2
  wrapper: {
3
3
  base: `
4
4
  w-fit inline-flex rounded transition focus-visible:outline-none
5
- focus-within:ring-dynamic focus-within:ring-offset-4 focus-within:ring-{color}-500/15
5
+ focus-within:ring-dynamic focus-within:ring-offset-4 focus-within:ring-{color}-700/15
6
6
  `,
7
7
  variants: {
8
8
  color: {
@@ -10,7 +10,7 @@ export default /*tw*/ {
10
10
  white: "focus-within:ring-white/15",
11
11
  },
12
12
  disabled: {
13
- true: "pointer-events-none text-gray-400",
13
+ true: "focus-within:ring-0 cursor-not-allowed",
14
14
  },
15
15
  block: {
16
16
  true: "w-full",
@@ -23,10 +23,10 @@ export default /*tw*/ {
23
23
  link: {
24
24
  base: `
25
25
  w-full inline-block cursor-pointer !leading-none transition
26
- text-{color}-500 decoration-{color}-500 underline-offset-4
27
- hover:text-opacity-80
28
- active:text-opacity-70
29
- focus:ring-0 focus:ring-offset-0
26
+ text-{color}-600 decoration-{color}-600 underline-offset-4
27
+ hover:text-{color}-700 hover:decoration-{color}-700
28
+ focus:text-{color}-700 focus:decoration-{color}-700 focus:ring-0 focus:ring-offset-0
29
+ active:text-{color}-800 active:decoration-{color}-800
30
30
  `,
31
31
  variants: {
32
32
  size: {
@@ -40,12 +40,20 @@ export default /*tw*/ {
40
40
  false: "no-underline",
41
41
  },
42
42
  color: {
43
- grayscale: "decoration-gray-900 text-gray-900",
43
+ grayscale: `
44
+ text-gray-900 decoration-gray-900
45
+ hover:text-gray-800 hover:decoration-gray-800
46
+ focus:text-gray-800 focus:decoration-gray-800
47
+ active:text-gray-700 active:decoration-gray-700
48
+ `,
44
49
  white: "decoration-white text-white",
45
50
  },
46
51
  dashed: {
47
52
  true: "hover:decoration-dashed decoration-dashed",
48
53
  },
54
+ disabled: {
55
+ true: "text-gray-400 pointer-events-none",
56
+ },
49
57
  },
50
58
  },
51
59
  text: "w-full",
@@ -9,7 +9,7 @@ export default /*tw*/ {
9
9
  },
10
10
  },
11
11
  items: {
12
- base: "flex flex-wrap",
12
+ base: "",
13
13
  variants: {
14
14
  size: {
15
15
  "2xs": "gap-1",
@@ -20,12 +20,14 @@ export default /*tw*/ {
20
20
  xl: "gap-3",
21
21
  },
22
22
  separated: {
23
+ true: "flex flex-wrap",
23
24
  false: `
24
- flex-nowrap -space-x-px gap-0
25
+ flex flex-nowrap -space-x-px gap-0 rounded-dynamic transition w-fit
25
26
  [&>:first-child]:rounded-dynamic [&>:first-child]:rounded-r-none
26
27
  [&>:last-child]:rounded-dynamic [&>:last-child]:rounded-l-none
27
28
  [&>:first-child>*>*]:rounded-dynamic [&>:first-child>*>*]:rounded-r-none
28
29
  [&>:last-child>*>*]:rounded-dynamic [&>:last-child>*>*]:rounded-l-none
30
+ focus-within:ring-dynamic focus-within:ring-offset-dynamic focus-within:ring-brand-700/15
29
31
  `,
30
32
  },
31
33
  },
@@ -14,11 +14,8 @@ export default /*tw*/ {
14
14
  },
15
15
  variant: {
16
16
  thirdary: `
17
- !text-gray-900 bg-brand-600
18
- border-transparent bg-opacity-10
19
- hover:border-transparent hover:bg-opacity-15
20
- focus:border-transparent focus:bg-opacity-15
21
- active:border-transparent active:bg-opacity-20
17
+ !text-gray-900 !border-transparent bg-brand-600/10
18
+ hover:bg-brand-600/15 focus:bg-brand-600/15 active:bg-brand-600/20
22
19
  `,
23
20
  },
24
21
  },
@@ -35,12 +32,12 @@ export default /*tw*/ {
35
32
  {
36
33
  selected: true,
37
34
  variant: "secondary",
38
- class: "text-brand-600 border-brand-600 disabled:border-brand-600 bg-brand-600 bg-opacity-10",
35
+ class: "text-brand-600 border-brand-600 disabled:border-brand-600 bg-brand-600/10",
39
36
  },
40
37
  {
41
38
  selected: true,
42
39
  variant: "thirdary",
43
- class: "bg-brand-600 bg-opacity-20 hover:bg-opacity-20 focus:bg-opacity-20",
40
+ class: "!bg-brand-600/20",
44
41
  },
45
42
  ],
46
43
  },
@@ -2,6 +2,7 @@
2
2
  <UButton
3
3
  tabindex="0"
4
4
  :for="id"
5
+ :no-ring="!getToggleSeparated()"
5
6
  color="grayscale"
6
7
  variant="secondary"
7
8
  :label="label"
@@ -157,8 +158,8 @@ onMounted(() => {
157
158
  });
158
159
 
159
160
  function onClickSetValue() {
160
- selectedItem.value = getToggleType() === TYPE_RADIO
161
- ? props.value
161
+ selectedItem.value = getToggleType() === TYPE_RADIO
162
+ ? props.value
162
163
  : selectedValue?.value?.includes(props.value) || selectedItem.value;
163
164
 
164
165
  updateSelectedValue && updateSelectedValue(props.value, !selectedItem.value);
@@ -8,7 +8,7 @@ export default /*tw*/ {
8
8
  leaveFromClass: "opacity-100 translate-y-0 transform sm:scale-100",
9
9
  leaveToClass: "opacity-0 translate-y-4 sm:translate-y-0 transform sm:scale-95",
10
10
  },
11
- overlay: "fixed inset-0 z-40 bg-gray-900 bg-opacity-75",
11
+ overlay: "fixed inset-0 z-40 bg-gray-900/75",
12
12
  overlayTransition: {
13
13
  enterActiveClass: "ease-out duration-300",
14
14
  enterFromClass: "opacity-0",
@@ -2,7 +2,7 @@ export default /*tw*/ {
2
2
  wrapper: "",
3
3
  draggable: "",
4
4
  draggableDrag: "bg-gray-100",
5
- draggableGhost: "bg-opacity-50",
5
+ draggableGhost: "bg-gray-100/50",
6
6
  itemWrapper: "group/item-wrapper",
7
7
  item: `
8
8
  group/item
@@ -37,7 +37,7 @@ export default /*tw*/ {
37
37
  periodsRow: "mb-1 flex min-w-64 gap-1",
38
38
  periodButton: "{UButton} h-[3.125rem] w-full",
39
39
  periodButtonIconName: "apps",
40
- periodButtonActive: "!bg-opacity-20",
40
+ periodButtonActive: "!bg-gray-800/20",
41
41
  rangeSwitchWrapper: "flex items-center justify-between py-2",
42
42
  rangeSwitchButton: "{UButton}",
43
43
  rangeSwitchTitle: "font-medium text-sm",
@@ -856,19 +856,19 @@ function onClickShiftDatesList(action) {
856
856
  }
857
857
 
858
858
  function getPeriodButtonsClasses(periodName) {
859
- return period.value === periodName ? [config.value.periodButtonActive] : [];
859
+ return period.value === periodName ? config.value.periodButtonActive : "";
860
860
  }
861
861
 
862
862
  function getPeriodDateClasses(date) {
863
- return localValue.value.from === date.startRange ? [config.value.periodDateActive] : [];
863
+ return localValue.value.from === date.startRange ? config.value.periodDateActive : "";
864
864
  }
865
865
 
866
866
  function getPeriodDateListClasses() {
867
867
  if (isPeriod.value.ownRange) return [];
868
- if (isPeriod.value.week) return [config.value.periodDateWeekList];
869
- if (isPeriod.value.month) return [config.value.periodDateMonthList];
870
- if (isPeriod.value.quarter) return [config.value.periodDateQuarterList];
871
- if (isPeriod.value.year) return [config.value.periodDateYearList];
868
+ if (isPeriod.value.week) return config.value.periodDateWeekList;
869
+ if (isPeriod.value.month) return config.value.periodDateMonthList;
870
+ if (isPeriod.value.quarter) return config.value.periodDateQuarterList;
871
+ if (isPeriod.value.year) return config.value.periodDateYearList;
872
872
  }
873
873
 
874
874
  function activate() {
@@ -16,12 +16,6 @@ export default /*tw*/ {
16
16
  focus-within:border-brand-500 focus-within:ring-dynamic focus-within:ring-offset-dynamic focus-within:ring-brand-700/15
17
17
  `,
18
18
  variants: {
19
- disabled: {
20
- true: `
21
- text-gray-900 border-gray-100 bg-gray-100 opacity-100 cursor-default
22
- hover:border-gray-100
23
- `,
24
- },
25
19
  error: {
26
20
  true: `
27
21
  border-red-300
@@ -29,16 +23,17 @@ export default /*tw*/ {
29
23
  focus-within:border-red-500 focus-within:ring-red-700/15
30
24
  `,
31
25
  },
26
+ disabled: {
27
+ true: "pointer-events-none",
28
+ },
32
29
  },
33
30
  },
34
31
  input: {
35
32
  base: `
36
33
  block w-full py-2 px-3 font-normal leading-none text-gray-900 bg-white
37
- border-none rounded-dynamic transition
34
+ border-none rounded-dynamic transition focus:ring-0
38
35
  placeholder:font-normal placeholder-gray-400
39
- focus:ring-0 disabled:opacity-50
40
- disabled:cursor-not-allowed disabled:text-gray-900 disabled:border-gray-100
41
- read-only:ring-0 read-only:border-gray-300
36
+ disabled:text-gray-700 disabled:bg-gray-100
42
37
  `,
43
38
  variants: {
44
39
  size: {
@@ -1,13 +1,6 @@
1
1
  export default /*tw*/ {
2
- input: {
3
- component: "{UInput}",
4
- wrapper: "relative flex items-center justify-between w-full rounded-dynamic bg-gray-900 bg-opacity-5",
5
- input: "w-full",
6
- label: "w-full",
7
- rightSlot: "pr-0",
8
- leftSlot: "pl-0",
9
- },
10
- clearIcon: "{UIcon} flex h-full items-center",
2
+ input: "{UInput}",
3
+ clearIcon: "{UIcon}",
11
4
  clearIconName: "close",
12
5
  searchIcon: "{UIcon}",
13
6
  searchIconName: "search",
@@ -17,6 +10,7 @@ export default /*tw*/ {
17
10
  labelAlign: "topInside",
18
11
  debounce: 300,
19
12
  disabled: false,
13
+ readonly: false,
20
14
  searchButton: false,
21
15
  },
22
16
  };
@@ -5,6 +5,7 @@
5
5
  v-model="search"
6
6
  :size="size"
7
7
  :disabled="disabled"
8
+ :readonly="readonly"
8
9
  :label-align="labelAlign"
9
10
  :label="label"
10
11
  :error="error"
@@ -64,6 +65,7 @@
64
65
  <UButton
65
66
  v-if="searchButtonLabel"
66
67
  :label="searchButtonLabel"
68
+ :size="buttonSize"
67
69
  no-ring
68
70
  v-bind="buttonAttrs"
69
71
  :data-cy="`${dataCy}-right`"
@@ -157,6 +159,14 @@ const props = defineProps({
157
159
  default: "",
158
160
  },
159
161
 
162
+ /**
163
+ * Set input read-only.
164
+ */
165
+ readonly: {
166
+ type: Boolean,
167
+ default: UIService.get(defaultConfig, UInputSearch).default.readonly,
168
+ },
169
+
160
170
  /**
161
171
  * Set input disabled.
162
172
  */
@@ -237,6 +247,16 @@ const iconSize = computed(() => {
237
247
  return sizes[props.size];
238
248
  });
239
249
 
250
+ const buttonSize = computed(() => {
251
+ const sizes = {
252
+ sm: "xs",
253
+ md: "md",
254
+ lg: "lg",
255
+ };
256
+
257
+ return sizes[props.size];
258
+ });
259
+
240
260
  function onClickClear() {
241
261
  search.value = "";
242
262
  emit("clear");
@@ -20,9 +20,9 @@ export default /*tw*/ {
20
20
  { toggleLabel: true, size: "sm", class: "w-10" },
21
21
  { toggleLabel: true, size: "md", class: "w-12" },
22
22
  { toggleLabel: true, size: "lg", class: "w-14" },
23
- { disabled: true, checked: true, class: "bg-opacity-50 pointer-events-none" },
24
- { disabled: true, checked: false, class: "bg-opacity-50 pointer-events-none" },
25
- { color: "grayscale", checked: true, class: "bg-gray-900 ring-gray-700/15" },
23
+ { disabled: true, checked: false, class: "bg-gray-300" },
24
+ { disabled: true, checked: true, class: "bg-gray-400" },
25
+ { color: "grayscale", disabled: false, checked: true, class: "bg-gray-900 ring-gray-700/15" },
26
26
  ],
27
27
  },
28
28
  input: "absolute size-0 opacity-0",
@@ -4,10 +4,9 @@ export default /*tw*/ {
4
4
  rightSlot: "flex items-center justify-center h-full w-11 absolute right-0",
5
5
  textareaWrapper: {
6
6
  base: `
7
- px-3 py-2 rounded-dynamic border border-gray-300 cursor-text bg-white transition
8
- hover:border-gray-400 hover:focus-within:border-gray-500
9
- focus-within:ring-dynamic focus-within:ring-offset-dynamic focus-within:ring-gray-700/15
10
- focus-within:border-gray-500 focus-within:outline-none
7
+ px-3 py-2 bg-white transition
8
+ rounded-dynamic border border-gray-300 hover:border-gray-400 hover:focus-within:border-gray-500 focus-within:border-gray-500
9
+ focus-within:ring-dynamic focus-within:ring-offset-dynamic focus-within:ring-gray-700/15 focus-within:outline-none
11
10
  `,
12
11
  variants: {
13
12
  error: {
@@ -18,10 +17,7 @@ export default /*tw*/ {
18
17
  `,
19
18
  },
20
19
  disabled: {
21
- true: "cursor-not-allowed border-none focus-within:ring-0 bg-gray-100",
22
- },
23
- readonly: {
24
- true: "ring-0 border-gray-300 focus-within:ring-0 focus-within:border-brand-300",
20
+ true: "pointer-events-none bg-gray-100",
25
21
  },
26
22
  },
27
23
  compoundVariants: [
@@ -32,10 +28,9 @@ export default /*tw*/ {
32
28
  },
33
29
  textarea: {
34
30
  base: `
35
- placeholder:font-normal placeholder:text-gray-400 shadow-none w-full
36
- disabled:cursor-not-allowed font-normal text-gray-900 resize-none block
37
- border-none focus:border-none focus:outline-none focus:ring-0 p-0
38
- bg-transparent
31
+ p-0 block w-full bg-transparent border-none font-normal text-gray-900
32
+ placeholder:font-normal placeholder:text-gray-400
33
+ focus:border-none focus:outline-none focus:ring-0
39
34
  `,
40
35
  variants: {
41
36
  size: {
@@ -46,7 +41,7 @@ export default /*tw*/ {
46
41
  },
47
42
  },
48
43
  defaultVariants: {
49
- rows: "2",
44
+ rows: "3",
50
45
  size: "md",
51
46
  type: "text",
52
47
  inputmode: "text",
@@ -3,7 +3,7 @@ export default /*tw*/ {
3
3
  base: "",
4
4
  variants: {
5
5
  pill: {
6
- true: "rounded-full bg-{color}-500 bg-opacity-5",
6
+ true: "rounded-full bg-{color}-500/5",
7
7
  },
8
8
  },
9
9
  compoundVariants: [
package/web-types.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "framework": "vue",
3
3
  "name": "vueless",
4
- "version": "0.0.258",
4
+ "version": "0.0.260",
5
5
  "contributions": {
6
6
  "html": {
7
7
  "description-markup": "markdown",
@@ -4930,6 +4930,15 @@
4930
4930
  },
4931
4931
  "default": "\"\""
4932
4932
  },
4933
+ {
4934
+ "name": "readonly",
4935
+ "description": "Set input read-only.",
4936
+ "value": {
4937
+ "kind": "expression",
4938
+ "type": "boolean"
4939
+ },
4940
+ "default": "false"
4941
+ },
4933
4942
  {
4934
4943
  "name": "disabled",
4935
4944
  "description": "Set input disabled.",
@@ -7951,7 +7960,7 @@
7951
7960
  "kind": "expression",
7952
7961
  "type": "string"
7953
7962
  },
7954
- "default": "2"
7963
+ "default": "3"
7955
7964
  },
7956
7965
  {
7957
7966
  "name": "id",