ropav 0.0.2 → 0.0.3

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 (74) hide show
  1. package/README.md +32 -3
  2. package/dist/base.css +125 -88
  3. package/dist/button.css +259 -32
  4. package/dist/button.js +51 -19
  5. package/dist/button.js.map +1 -1
  6. package/dist/checkbox.css +125 -21
  7. package/dist/checkbox.js +77 -42
  8. package/dist/checkbox.js.map +1 -1
  9. package/dist/components/button/button.d.ts +2 -2
  10. package/dist/components/button/index.d.ts +1 -1
  11. package/dist/components/button/types.d.ts +8 -1
  12. package/dist/components/checkbox/index.d.ts +1 -1
  13. package/dist/components/checkbox/types.d.ts +8 -0
  14. package/dist/components/input/index.d.ts +1 -1
  15. package/dist/components/input/input.d.ts +5 -1
  16. package/dist/components/input/types.d.ts +5 -0
  17. package/dist/components/radio/index.d.ts +1 -1
  18. package/dist/components/radio/types.d.ts +12 -0
  19. package/dist/components/select/types.d.ts +3 -0
  20. package/dist/components/select/useSelect.d.ts +2 -0
  21. package/dist/components/switch/index.d.ts +1 -1
  22. package/dist/components/switch/types.d.ts +4 -0
  23. package/dist/components/textarea/index.d.ts +1 -1
  24. package/dist/components/textarea/types.d.ts +5 -0
  25. package/dist/components/textarea/useTextarea.d.ts +1 -0
  26. package/dist/index.d.ts +0 -2
  27. package/dist/index.js +2 -4
  28. package/dist/input.css +87 -21
  29. package/dist/input.js +66 -23
  30. package/dist/input.js.map +1 -1
  31. package/dist/radio.css +82 -18
  32. package/dist/radio.js +35 -8
  33. package/dist/radio.js.map +1 -1
  34. package/dist/select.css +104 -39
  35. package/dist/select.js +149 -87
  36. package/dist/select.js.map +1 -1
  37. package/dist/switch.css +75 -20
  38. package/dist/switch.js +8 -4
  39. package/dist/switch.js.map +1 -1
  40. package/dist/textarea.css +80 -20
  41. package/dist/textarea.js +33 -5
  42. package/dist/textarea.js.map +1 -1
  43. package/dist/useControlState.js +4 -0
  44. package/dist/useControlState.js.map +1 -1
  45. package/package.json +9 -9
  46. package/src/styles/_mixins.scss +18 -8
  47. package/src/styles/_tokens.scss +130 -99
  48. package/src/styles/_variables.scss +28 -28
  49. package/dist/components/_internal/icons/CheckIcon.d.ts +0 -18
  50. package/dist/components/_internal/icons/ChevronDownIcon.d.ts +0 -18
  51. package/dist/components/_internal/icons/MinusIcon.d.ts +0 -18
  52. package/dist/components/_internal/icons/index.d.ts +0 -3
  53. package/dist/components/_internal/optionList.d.ts +0 -9
  54. package/dist/components/tabs/index.d.ts +0 -5
  55. package/dist/components/tabs/index.js +0 -2
  56. package/dist/components/tabs/tab-panel.d.ts +0 -21
  57. package/dist/components/tabs/tabs-list.d.ts +0 -20
  58. package/dist/components/tabs/tabs-trigger.d.ts +0 -21
  59. package/dist/components/tabs/tabs.d.ts +0 -23
  60. package/dist/components/tabs/types.d.ts +0 -18
  61. package/dist/components/tabs/useTabs.d.ts +0 -19
  62. package/dist/components/tooltip/index.d.ts +0 -2
  63. package/dist/components/tooltip/index.js +0 -2
  64. package/dist/components/tooltip/tooltip.d.ts +0 -23
  65. package/dist/components/tooltip/types.d.ts +0 -5
  66. package/dist/components/tooltip/useTooltip.d.ts +0 -8
  67. package/dist/tabs.css +0 -45
  68. package/dist/tabs.js +0 -205
  69. package/dist/tabs.js.map +0 -1
  70. package/dist/tooltip.css +0 -78
  71. package/dist/tooltip.js +0 -112
  72. package/dist/tooltip.js.map +0 -1
  73. package/dist/useRequiredInject.js +0 -11
  74. package/dist/useRequiredInject.js.map +0 -1
package/dist/button.js CHANGED
@@ -1,18 +1,41 @@
1
1
  import './button.css';
2
2
  import { n as bem, t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
3
- import { child, computed, createIf, createSlot, defineVaporComponent, renderEffect, setClass, setInsertionState, setProp, template } from "vue";
3
+ import { child, computed, createComponent, createElementBlock, createElementVNode, createIf, createSlot, defineVaporComponent, markRaw, openBlock, renderEffect, setClass, setInsertionState, setProp, template, unref } from "vue";
4
+ //#region ~icons/lucide/loader-circle
5
+ var _hoisted_1 = {
6
+ viewBox: "0 0 24 24",
7
+ width: "1.2em",
8
+ height: "1.2em"
9
+ };
10
+ function render(_ctx, _cache) {
11
+ return openBlock(), createElementBlock("svg", _hoisted_1, [..._cache[0] || (_cache[0] = [createElementVNode("path", {
12
+ fill: "none",
13
+ stroke: "currentColor",
14
+ "stroke-linecap": "round",
15
+ "stroke-linejoin": "round",
16
+ "stroke-width": "2",
17
+ d: "M21 12a9 9 0 1 1-6.219-8.56"
18
+ }, null, -1)])]);
19
+ }
20
+ var loader_circle_default = markRaw({
21
+ name: "lucide-loader-circle",
22
+ render
23
+ });
24
+ //#endregion
4
25
  //#region src/components/button/button.vue?vue&type=script&setup=true&vapor=true&lang.ts
5
- var t0 = template("<span data-v-c2d151de class=rp-button__spinner aria-hidden=true>", 2);
6
- var t1 = template("<span data-v-c2d151de class=rp-button__prefix>");
7
- var t2 = template("<span data-v-c2d151de class=rp-button__suffix>");
8
- var t3 = template("<button data-v-c2d151de><span data-v-c2d151de class=rp-button__label></span>", 1);
26
+ var t0 = template("<span data-v-b8d57358 class=rp-button__left>");
27
+ var t1 = template("<span data-v-b8d57358 class=rp-button__right>");
28
+ var t2 = template("<button data-v-b8d57358><span data-v-b8d57358 class=rp-button__label></span>", 1);
9
29
  //#endregion
10
30
  //#region src/components/button/button.vue
11
31
  var button_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
12
32
  name: "RpButton",
13
33
  __name: "button",
14
34
  props: {
15
- variant: { default: "solid" },
35
+ variant: {},
36
+ color: {},
37
+ size: {},
38
+ radius: {},
16
39
  type: { default: "button" },
17
40
  disabled: {
18
41
  type: Boolean,
@@ -25,37 +48,46 @@ var button_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
25
48
  },
26
49
  setup(__props, { slots: $slots }) {
27
50
  const props = __props;
28
- const rootClass = computed(() => bem("rp-button", props.variant));
29
- const n13 = t3();
51
+ const isLoading = computed(() => props.loading && !props.disabled);
52
+ const rootClass = computed(() => bem("rp-button", {
53
+ [props.variant ?? ""]: Boolean(props.variant),
54
+ [`color-${props.color}`]: Boolean(props.color),
55
+ [`size-${props.size}`]: Boolean(props.size),
56
+ [`radius-${props.radius}`]: Boolean(props.radius)
57
+ }));
58
+ const n13 = t2();
30
59
  const n8 = child(n13, 2);
31
60
  renderEffect(() => {
32
61
  setClass(n13, rootClass.value);
33
- setProp(n13, "disabled", __props.disabled || __props.loading || void 0);
62
+ setProp(n13, "disabled", __props.disabled || isLoading.value || void 0);
34
63
  setProp(n13, "type", __props.type);
35
64
  });
36
65
  setInsertionState(n13, 0, 0);
37
- createIf(() => __props.loading, () => {
38
- return t0();
39
- }, null, 33);
66
+ createIf(() => isLoading.value, () => {
67
+ return createComponent(unref(loader_circle_default), {
68
+ class: "rp-button__spinner",
69
+ "aria-hidden": "true"
70
+ });
71
+ });
40
72
  setInsertionState(n13, 0, 1);
41
- createIf(() => $slots.prefix && !__props.loading, () => {
42
- const n6 = t1();
73
+ createIf(() => $slots.left && !isLoading.value, () => {
74
+ const n6 = t0();
43
75
  setInsertionState(n6, null, 0);
44
- createSlot("prefix", null, null, 1);
76
+ createSlot("left", null, null, 1);
45
77
  return n6;
46
78
  });
47
79
  setInsertionState(n8, null, 0);
48
80
  createSlot("default", null, null, 1);
49
81
  setInsertionState(n13, null, 3);
50
- createIf(() => $slots.suffix, () => {
51
- const n12 = t2();
82
+ createIf(() => $slots.right, () => {
83
+ const n12 = t1();
52
84
  setInsertionState(n12, null, 0);
53
- createSlot("suffix", null, null, 1);
85
+ createSlot("right", null, null, 1);
54
86
  return n12;
55
87
  });
56
88
  return n13;
57
89
  }
58
- }), [["__scopeId", "data-v-c2d151de"]]);
90
+ }), [["__scopeId", "data-v-b8d57358"]]);
59
91
  //#endregion
60
92
  export { button_default as t };
61
93
 
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","names":[],"sources":["../src/components/button/button.vue","../src/components/button/button.vue"],"sourcesContent":["<template>\n <button :class=\"rootClass\" :disabled=\"disabled || loading || undefined\" :type=\"type\">\n <span v-if=\"loading\" class=\"rp-button__spinner\" aria-hidden=\"true\" />\n <span v-if=\"$slots.prefix && !loading\" class=\"rp-button__prefix\">\n <slot name=\"prefix\" />\n </span>\n <span class=\"rp-button__label\">\n <slot />\n </span>\n <span v-if=\"$slots.suffix\" class=\"rp-button__suffix\">\n <slot name=\"suffix\" />\n </span>\n </button>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { computed } from 'vue';\nimport { bem } from '@/utils/bem';\nimport type { ButtonProps } from './types';\n\ndefineOptions({ name: 'RpButton' });\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n variant: 'solid',\n type: 'button',\n disabled: false,\n loading: false,\n});\n\nconst rootClass = computed(() => bem('rp-button', props.variant));\n</script>\n\n<style src=\"./button.scss\" lang=\"scss\" scoped></style>\n","<template>\n <button :class=\"rootClass\" :disabled=\"disabled || loading || undefined\" :type=\"type\">\n <span v-if=\"loading\" class=\"rp-button__spinner\" aria-hidden=\"true\" />\n <span v-if=\"$slots.prefix && !loading\" class=\"rp-button__prefix\">\n <slot name=\"prefix\" />\n </span>\n <span class=\"rp-button__label\">\n <slot />\n </span>\n <span v-if=\"$slots.suffix\" class=\"rp-button__suffix\">\n <slot name=\"suffix\" />\n </span>\n </button>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { computed } from 'vue';\nimport { bem } from '@/utils/bem';\nimport type { ButtonProps } from './types';\n\ndefineOptions({ name: 'RpButton' });\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n variant: 'solid',\n type: 'button',\n disabled: false,\n loading: false,\n});\n\nconst rootClass = computed(() => bem('rp-button', props.variant));\n</script>\n\n<style src=\"./button.scss\" lang=\"scss\" scoped></style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAsBA,MAAM,QAAQ;EAOd,MAAM,YAAY,eAAe,IAAI,aAAa,MAAM,OAAO,CAAC;;;;iBA5B5C,UAAA,KAAS;gBAAG,YAAU,QAAA,YAAY,QAAA,WAAW,KAAA,CAAS;gBAAG,QAAM,QAAA,IAAI;;;iBACnE,QAAA,eAAO;;;;iBACP,OAAM,UAAA,CAAY,QAAA,eAAO;;;cAC3B,UAAa,MAAA,MAAA,CAAA;;;;;;iBAKX,OAAM,cAAA;;;cACR,UAAa,MAAA,MAAA,CAAA"}
1
+ {"version":3,"file":"button.js","names":[],"sources":["../src/components/button/button.vue","../src/components/button/button.vue"],"sourcesContent":["<template>\n <button :class=\"rootClass\" :disabled=\"disabled || isLoading || undefined\" :type=\"type\">\n <IconLoaderCircle v-if=\"isLoading\" class=\"rp-button__spinner\" aria-hidden=\"true\" />\n <span v-if=\"$slots.left && !isLoading\" class=\"rp-button__left\">\n <slot name=\"left\" />\n </span>\n <span class=\"rp-button__label\">\n <slot />\n </span>\n <span v-if=\"$slots.right\" class=\"rp-button__right\">\n <slot name=\"right\" />\n </span>\n </button>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { computed } from 'vue';\nimport IconLoaderCircle from '~icons/lucide/loader-circle';\nimport { bem } from '@/utils/bem';\nimport type { ButtonProps } from './types';\n\ndefineOptions({ name: 'RpButton' });\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n type: 'button',\n disabled: false,\n loading: false,\n});\n\nconst isLoading = computed(() => props.loading && !props.disabled);\n\nconst rootClass = computed(() =>\n bem('rp-button', {\n [props.variant ?? '']: Boolean(props.variant),\n [`color-${props.color}`]: Boolean(props.color),\n [`size-${props.size}`]: Boolean(props.size),\n [`radius-${props.radius}`]: Boolean(props.radius),\n }),\n);\n</script>\n\n<style src=\"./button.scss\" lang=\"scss\" scoped></style>\n","<template>\n <button :class=\"rootClass\" :disabled=\"disabled || isLoading || undefined\" :type=\"type\">\n <IconLoaderCircle v-if=\"isLoading\" class=\"rp-button__spinner\" aria-hidden=\"true\" />\n <span v-if=\"$slots.left && !isLoading\" class=\"rp-button__left\">\n <slot name=\"left\" />\n </span>\n <span class=\"rp-button__label\">\n <slot />\n </span>\n <span v-if=\"$slots.right\" class=\"rp-button__right\">\n <slot name=\"right\" />\n </span>\n </button>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { computed } from 'vue';\nimport IconLoaderCircle from '~icons/lucide/loader-circle';\nimport { bem } from '@/utils/bem';\nimport type { ButtonProps } from './types';\n\ndefineOptions({ name: 'RpButton' });\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n type: 'button',\n disabled: false,\n loading: false,\n});\n\nconst isLoading = computed(() => props.loading && !props.disabled);\n\nconst rootClass = computed(() =>\n bem('rp-button', {\n [props.variant ?? '']: Boolean(props.variant),\n [`color-${props.color}`]: Boolean(props.color),\n [`size-${props.size}`]: Boolean(props.size),\n [`radius-${props.radius}`]: Boolean(props.radius),\n }),\n);\n</script>\n\n<style src=\"./button.scss\" lang=\"scss\" scoped></style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBA,MAAM,QAAQ;EAMd,MAAM,YAAY,eAAe,MAAM,WAAW,CAAC,MAAM,QAAQ;EAEjE,MAAM,YAAY,eACd,IAAI,aAAa;IACZ,MAAM,WAAW,KAAK,QAAQ,MAAM,OAAO;IAC3C,SAAS,MAAM,UAAU,QAAQ,MAAM,KAAK;IAC5C,QAAQ,MAAM,SAAS,QAAQ,MAAM,IAAI;IACzC,UAAU,MAAM,WAAW,QAAQ,MAAM,MAAM;EACpD,CAAC,CACL;;;;iBArCoB,UAAA,KAAS;gBAAG,YAAU,QAAA,YAAY,UAAA,SAAa,KAAA,CAAS;gBAAG,QAAM,QAAA,IAAI;;;iBACzD,UAAA,aAAS;;IAAE,OAAM;IAAqB,eAAY;;;;iBAC9D,OAAM,QAAA,CAAU,UAAA,aAAS;;;cAC3B,QAAW,MAAA,MAAA,CAAA;;;;;;iBAKT,OAAM,aAAA;;;cACR,SAAY,MAAA,MAAA,CAAA"}
package/dist/checkbox.css CHANGED
@@ -1,20 +1,28 @@
1
- .rp-checkbox[data-v-03521fec] {
1
+ .rp-checkbox[data-v-7333dac7] {
2
+ --_checkbox-color: var(--rp-color-primary);
3
+ --_checkbox-on-color: var(--rp-color-on-primary);
4
+ --_checkbox-size: 18px;
5
+ --_checkbox-icon-size: 14px;
6
+ --_checkbox-font-size: var(--rp-font-size-base);
7
+ --_checkbox-radius: 4px;
8
+ --_checkbox-checked-bg: var(--_checkbox-color);
9
+ --_checkbox-checked-border: var(--_checkbox-color);
10
+ --_checkbox-checked-icon: var(--_checkbox-on-color);
2
11
  display: inline-flex;
3
12
  align-items: center;
4
13
  cursor: pointer;
5
14
  font-family: var(--rp-font-family);
6
15
  user-select: none;
7
16
  }
8
- .rp-checkbox--disabled[data-v-03521fec] {
17
+ .rp-checkbox--disabled[data-v-7333dac7] {
9
18
  opacity: var(--rp-opacity-disabled);
10
19
  cursor: not-allowed;
11
20
  }
12
- .rp-checkbox[data-v-03521fec] {
21
+ .rp-checkbox[data-v-7333dac7] {
13
22
  gap: var(--rp-spacing-2);
14
- font-size: var(--rp-font-size-base);
15
- --_checkbox-size: 18px;
23
+ font-size: var(--_checkbox-font-size);
16
24
  }
17
- .rp-checkbox__native[data-v-03521fec] {
25
+ .rp-checkbox__native[data-v-7333dac7] {
18
26
  position: absolute;
19
27
  width: 1px;
20
28
  height: 1px;
@@ -26,35 +34,131 @@
26
34
  border-width: 0;
27
35
  pointer-events: none;
28
36
  }
29
- .rp-checkbox__native:focus-visible + .rp-checkbox__box[data-v-03521fec] {
30
- border-color: var(--rp-color-control-border-focus);
37
+ .rp-checkbox__native:focus-visible + .rp-checkbox__box[data-v-7333dac7] {
38
+ border-color: var(--rp-color-primary);
31
39
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
32
40
  }
33
- .rp-checkbox__box[data-v-03521fec] {
41
+ .rp-checkbox__box[data-v-7333dac7] {
34
42
  display: inline-flex;
35
43
  align-items: center;
36
44
  justify-content: center;
37
45
  width: var(--_checkbox-size);
38
46
  height: var(--_checkbox-size);
39
47
  flex-shrink: 0;
40
- border: var(--rp-border-width-medium) solid var(--rp-color-control-border);
41
- border-radius: var(--rp-radius-base);
42
- background-color: var(--rp-color-control-bg);
48
+ border: var(--rp-border-width-medium) solid var(--rp-color-border);
49
+ border-radius: var(--_checkbox-radius);
50
+ background-color: var(--rp-color-button-default-bg);
43
51
  transition: background-color var(--rp-transition-fast), border-color var(--rp-transition-fast);
44
52
  }
45
- .rp-checkbox--checked .rp-checkbox__box[data-v-03521fec], .rp-checkbox--indeterminate .rp-checkbox__box[data-v-03521fec] {
46
- background-color: var(--rp-color-control-selected-bg);
47
- border-color: var(--rp-color-control-selected-bg);
53
+ .rp-checkbox--checked .rp-checkbox__box[data-v-7333dac7], .rp-checkbox--indeterminate .rp-checkbox__box[data-v-7333dac7] {
54
+ background-color: var(--_checkbox-checked-bg);
55
+ border-color: var(--_checkbox-checked-border);
48
56
  }
49
- .rp-checkbox--invalid .rp-checkbox__box[data-v-03521fec] {
57
+ .rp-checkbox--invalid .rp-checkbox__box[data-v-7333dac7] {
50
58
  border-color: var(--rp-color-danger-fg);
51
59
  }
52
- .rp-checkbox__icon[data-v-03521fec] {
53
- width: 12px;
54
- height: 12px;
55
- color: var(--rp-color-control-selected-fg);
60
+ .rp-checkbox__icon[data-v-7333dac7] {
61
+ width: var(--_checkbox-icon-size);
62
+ height: var(--_checkbox-icon-size);
63
+ color: var(--_checkbox-checked-icon);
64
+ transform-origin: center;
56
65
  }
57
- .rp-checkbox__label[data-v-03521fec] {
66
+ .rp-checkbox__icon[data-v-7333dac7] [stroke-width] {
67
+ stroke-width: 3;
68
+ }
69
+ .rp-checkbox__label[data-v-7333dac7] {
58
70
  line-height: var(--rp-line-height-normal);
59
71
  color: var(--rp-color-text);
72
+ }
73
+ .rp-checkbox--color-primary[data-v-7333dac7] {
74
+ --_checkbox-color: var(--rp-color-primary);
75
+ --_checkbox-on-color: var(--rp-color-on-primary);
76
+ }
77
+ .rp-checkbox--color-secondary[data-v-7333dac7] {
78
+ --_checkbox-color: var(--rp-color-secondary);
79
+ --_checkbox-on-color: var(--rp-color-on-secondary);
80
+ }
81
+ .rp-checkbox--color-success[data-v-7333dac7] {
82
+ --_checkbox-color: var(--rp-color-success);
83
+ --_checkbox-on-color: var(--rp-color-on-success);
84
+ }
85
+ .rp-checkbox--color-warning[data-v-7333dac7] {
86
+ --_checkbox-color: var(--rp-color-warning);
87
+ --_checkbox-on-color: var(--rp-color-on-warning);
88
+ }
89
+ .rp-checkbox--color-danger[data-v-7333dac7] {
90
+ --_checkbox-color: var(--rp-color-danger);
91
+ --_checkbox-on-color: var(--rp-color-on-danger);
92
+ }
93
+ .rp-checkbox--color-info[data-v-7333dac7] {
94
+ --_checkbox-color: var(--rp-color-info);
95
+ --_checkbox-on-color: var(--rp-color-on-info);
96
+ }
97
+ .rp-checkbox--outline[data-v-7333dac7] {
98
+ --_checkbox-checked-bg: var(--rp-color-button-default-bg);
99
+ --_checkbox-checked-border: var(--_checkbox-color);
100
+ --_checkbox-checked-icon: var(--_checkbox-color);
101
+ }
102
+ .rp-checkbox--size-xs[data-v-7333dac7] {
103
+ --_checkbox-size: 14px;
104
+ --_checkbox-icon-size: 10px;
105
+ --_checkbox-font-size: var(--rp-font-size-xs);
106
+ }
107
+ .rp-checkbox--size-sm[data-v-7333dac7] {
108
+ --_checkbox-size: 16px;
109
+ --_checkbox-icon-size: 12px;
110
+ --_checkbox-font-size: var(--rp-font-size-sm);
111
+ }
112
+ .rp-checkbox--size-md[data-v-7333dac7] {
113
+ --_checkbox-size: 18px;
114
+ --_checkbox-icon-size: 14px;
115
+ --_checkbox-font-size: var(--rp-font-size-base);
116
+ }
117
+ .rp-checkbox--size-lg[data-v-7333dac7] {
118
+ --_checkbox-size: 22px;
119
+ --_checkbox-icon-size: 16px;
120
+ --_checkbox-font-size: var(--rp-font-size-lg);
121
+ }
122
+ .rp-checkbox--size-xl[data-v-7333dac7] {
123
+ --_checkbox-size: 26px;
124
+ --_checkbox-icon-size: 20px;
125
+ --_checkbox-font-size: var(--rp-font-size-xl);
126
+ }
127
+ .rp-checkbox--radius-xs[data-v-7333dac7] {
128
+ --_checkbox-radius: 2px;
129
+ }
130
+ .rp-checkbox--radius-sm[data-v-7333dac7] {
131
+ --_checkbox-radius: 4px;
132
+ }
133
+ .rp-checkbox--radius-md[data-v-7333dac7] {
134
+ --_checkbox-radius: 6px;
135
+ }
136
+ .rp-checkbox--radius-lg[data-v-7333dac7] {
137
+ --_checkbox-radius: 8px;
138
+ }
139
+ .rp-checkbox--radius-xl[data-v-7333dac7] {
140
+ --_checkbox-radius: var(--rp-radius-full);
141
+ }
142
+ .rp-checkbox-icon-enter-active[data-v-7333dac7],
143
+ .rp-checkbox-icon-leave-active[data-v-7333dac7] {
144
+ transition: opacity var(--rp-transition-base), transform var(--rp-transition-base);
145
+ }
146
+ .rp-checkbox-icon-enter-from[data-v-7333dac7],
147
+ .rp-checkbox-icon-leave-to[data-v-7333dac7] {
148
+ opacity: 0;
149
+ transform: translateY(3px) scale(0.85);
150
+ }
151
+ .rp-checkbox-icon-enter-to[data-v-7333dac7],
152
+ .rp-checkbox-icon-leave-from[data-v-7333dac7] {
153
+ opacity: 1;
154
+ transform: translateY(0) scale(1);
155
+ }
156
+ .rp-checkbox-icon-leave-to[data-v-7333dac7] {
157
+ transform: translateY(-3px) scale(0.85);
158
+ }
159
+ @media (prefers-reduced-motion: reduce) {
160
+ .rp-checkbox-icon-enter-active[data-v-7333dac7],
161
+ .rp-checkbox-icon-leave-active[data-v-7333dac7] {
162
+ transition: none;
163
+ }
60
164
  }
package/dist/checkbox.js CHANGED
@@ -1,29 +1,47 @@
1
1
  import './checkbox.css';
2
2
  import { n as bem, t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
3
3
  import { t as useControlState } from "./useControlState.js";
4
- import { child, computed, createComponent, createIf, createSlot, defineVaporComponent, next, on, renderEffect, setAttr, setClass, setInsertionState, setProp, template, unref } from "vue";
5
- //#region src/components/_internal/icons/CheckIcon.vue?vue&type=script&setup=true&vapor=true&lang.ts
6
- var t0$2 = template("<svg viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=2><path d=\"M3.5 8.5L6.5 11.5L12.5 4.5\">", 3, 1);
7
- //#endregion
8
- //#region src/components/_internal/icons/CheckIcon.vue
9
- var CheckIcon_default = /* @__PURE__ */ defineVaporComponent({
10
- name: "CheckIcon",
11
- __name: "CheckIcon",
12
- setup(__props) {
13
- return t0$2();
14
- }
4
+ import { VaporTransition, child, computed, createComponent, createElementBlock, createElementVNode, createIf, createSlot, defineVaporComponent, extend, markRaw, next, on, openBlock, renderEffect, setAttr, setBlockKey, setClass, setInsertionState, setProp, template, unref } from "vue";
5
+ //#region ~icons/lucide/check
6
+ var _hoisted_1$1 = {
7
+ viewBox: "0 0 24 24",
8
+ width: "1.2em",
9
+ height: "1.2em"
10
+ };
11
+ function render$1(_ctx, _cache) {
12
+ return openBlock(), createElementBlock("svg", _hoisted_1$1, [..._cache[0] || (_cache[0] = [createElementVNode("path", {
13
+ fill: "none",
14
+ stroke: "currentColor",
15
+ "stroke-linecap": "round",
16
+ "stroke-linejoin": "round",
17
+ "stroke-width": "2",
18
+ d: "M20 6L9 17l-5-5"
19
+ }, null, -1)])]);
20
+ }
21
+ var check_default = markRaw({
22
+ name: "lucide-check",
23
+ render: render$1
15
24
  });
16
25
  //#endregion
17
- //#region src/components/_internal/icons/MinusIcon.vue?vue&type=script&setup=true&vapor=true&lang.ts
18
- var t0$1 = template("<svg viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=2><path d=\"M4 8h8\">", 3, 1);
19
- //#endregion
20
- //#region src/components/_internal/icons/MinusIcon.vue
21
- var MinusIcon_default = /* @__PURE__ */ defineVaporComponent({
22
- name: "MinusIcon",
23
- __name: "MinusIcon",
24
- setup(__props) {
25
- return t0$1();
26
- }
26
+ //#region ~icons/lucide/minus
27
+ var _hoisted_1 = {
28
+ viewBox: "0 0 24 24",
29
+ width: "1.2em",
30
+ height: "1.2em"
31
+ };
32
+ function render(_ctx, _cache) {
33
+ return openBlock(), createElementBlock("svg", _hoisted_1, [..._cache[0] || (_cache[0] = [createElementVNode("path", {
34
+ fill: "none",
35
+ stroke: "currentColor",
36
+ "stroke-linecap": "round",
37
+ "stroke-linejoin": "round",
38
+ "stroke-width": "2",
39
+ d: "M5 12h14"
40
+ }, null, -1)])]);
41
+ }
42
+ var minus_default = markRaw({
43
+ name: "lucide-minus",
44
+ render
27
45
  });
28
46
  //#endregion
29
47
  //#region src/components/checkbox/useCheckbox.ts
@@ -33,7 +51,11 @@ function useCheckbox(props, emitUpdate) {
33
51
  checked: props.modelValue,
34
52
  indeterminate: props.indeterminate,
35
53
  disabled: control.disabled,
36
- invalid: control.invalid
54
+ invalid: control.invalid,
55
+ [props.variant ?? ""]: Boolean(props.variant),
56
+ [`color-${props.color}`]: Boolean(props.color),
57
+ [`size-${props.size}`]: Boolean(props.size),
58
+ [`radius-${props.radius}`]: Boolean(props.radius)
37
59
  }));
38
60
  function onChange(e) {
39
61
  emitUpdate(e.target.checked);
@@ -46,8 +68,8 @@ function useCheckbox(props, emitUpdate) {
46
68
  }
47
69
  //#endregion
48
70
  //#region src/components/checkbox/checkbox.vue?vue&type=script&setup=true&vapor=true&lang.ts
49
- var t0 = template("<span data-v-03521fec class=rp-checkbox__label>");
50
- var t1 = template("<label data-v-03521fec><input data-v-03521fec type=checkbox class=rp-checkbox__native><span data-v-03521fec class=rp-checkbox__box></span>", 1);
71
+ var t0 = template("<span data-v-7333dac7 class=rp-checkbox__label>");
72
+ var t1 = template("<label data-v-7333dac7><input data-v-7333dac7 type=checkbox class=rp-checkbox__native><span data-v-7333dac7 class=rp-checkbox__box></span>", 1);
51
73
  //#endregion
52
74
  //#region src/components/checkbox/checkbox.vue
53
75
  var checkbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -57,6 +79,10 @@ var checkbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
57
79
  id: {},
58
80
  name: {},
59
81
  modelValue: { type: Boolean },
82
+ variant: {},
83
+ color: {},
84
+ size: {},
85
+ radius: {},
60
86
  disabled: {
61
87
  type: Boolean,
62
88
  default: void 0
@@ -84,9 +110,9 @@ var checkbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
84
110
  const { control, rootClass, onChange } = useCheckbox(props, (value) => {
85
111
  emit("update:modelValue", value);
86
112
  });
87
- const n11 = t1();
88
- const n0 = child(n11);
89
- const n6 = next(n0, 1);
113
+ const n13 = t1();
114
+ const n0 = child(n13);
115
+ const n8 = next(n0, 1);
90
116
  on(n0, "change", (e) => unref(onChange)(e));
91
117
  renderEffect(() => {
92
118
  const _control = unref(control);
@@ -94,9 +120,9 @@ var checkbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
94
120
  const _modelValue = __props.modelValue;
95
121
  const _control_disabled = _control.disabled;
96
122
  const _control_required = _control.required;
97
- setClass(n11, unref(rootClass));
98
- setAttr(n11, "data-disabled", _control_disabled || void 0);
99
- setAttr(n11, "data-state", _indeterminate ? "indeterminate" : _modelValue ? "checked" : "unchecked");
123
+ setClass(n13, unref(rootClass));
124
+ setAttr(n13, "data-disabled", _control_disabled || void 0);
125
+ setAttr(n13, "data-state", _indeterminate ? "indeterminate" : _modelValue ? "checked" : "unchecked");
100
126
  setProp(n0, "id", _control.id);
101
127
  setProp(n0, "name", __props.name);
102
128
  setProp(n0, "checked", _modelValue);
@@ -110,22 +136,31 @@ var checkbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
110
136
  setAttr(n0, "aria-invalid", _control.invalid || void 0);
111
137
  setAttr(n0, "aria-required", _control_required || void 0);
112
138
  });
113
- setInsertionState(n6, null, 0);
114
- createIf(() => __props.indeterminate, () => {
115
- return createComponent(unref(MinusIcon_default), { class: "rp-checkbox__icon" });
116
- }, () => createIf(() => __props.modelValue, () => {
117
- return createComponent(unref(CheckIcon_default), { class: "rp-checkbox__icon" });
118
- }), 261);
119
- setInsertionState(n11, null, 2);
139
+ setInsertionState(n8, null, 0);
140
+ createComponent(VaporTransition, {
141
+ name: "rp-checkbox-icon",
142
+ mode: "out-in"
143
+ }, extend(() => {
144
+ return createIf(() => __props.indeterminate, () => {
145
+ const n3 = createComponent(unref(minus_default), { class: "rp-checkbox__icon" });
146
+ setBlockKey(n3, "minus");
147
+ return n3;
148
+ }, () => createIf(() => __props.modelValue, () => {
149
+ const n5 = createComponent(unref(check_default), { class: "rp-checkbox__icon" });
150
+ setBlockKey(n5, "check");
151
+ return n5;
152
+ }, null, 129), 389);
153
+ }, { _: 8 }));
154
+ setInsertionState(n13, null, 2);
120
155
  createIf(() => $slots.default, () => {
121
- const n10 = t0();
122
- setInsertionState(n10, null, 0);
156
+ const n12 = t0();
157
+ setInsertionState(n12, null, 0);
123
158
  createSlot("default", null, null, 1);
124
- return n10;
159
+ return n12;
125
160
  });
126
- return n11;
161
+ return n13;
127
162
  }
128
- }), [["__scopeId", "data-v-03521fec"]]);
163
+ }), [["__scopeId", "data-v-7333dac7"]]);
129
164
  //#endregion
130
165
  export { checkbox_default as t };
131
166
 
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.js","names":[],"sources":["../src/components/_internal/icons/CheckIcon.vue","../src/components/_internal/icons/CheckIcon.vue","../src/components/_internal/icons/MinusIcon.vue","../src/components/_internal/icons/MinusIcon.vue","../src/components/checkbox/useCheckbox.ts","../src/components/checkbox/checkbox.vue","../src/components/checkbox/checkbox.vue"],"sourcesContent":["<template>\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M3.5 8.5L6.5 11.5L12.5 4.5\" />\n </svg>\n</template>\n\n<script lang=\"ts\" setup vapor>\ndefineOptions({ name: 'CheckIcon' });\n</script>\n","<template>\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M3.5 8.5L6.5 11.5L12.5 4.5\" />\n </svg>\n</template>\n\n<script lang=\"ts\" setup vapor>\ndefineOptions({ name: 'CheckIcon' });\n</script>\n","<template>\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M4 8h8\" />\n </svg>\n</template>\n\n<script lang=\"ts\" setup vapor>\ndefineOptions({ name: 'MinusIcon' });\n</script>\n","<template>\n <svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M4 8h8\" />\n </svg>\n</template>\n\n<script lang=\"ts\" setup vapor>\ndefineOptions({ name: 'MinusIcon' });\n</script>\n","import { computed } from 'vue';\nimport { useControlState } from '@/composables/useControlState';\nimport { bem } from '@/utils/bem';\nimport type { CheckboxProps } from './types';\n\nexport function useCheckbox(\n props: Readonly<CheckboxProps>,\n emitUpdate: (value: boolean) => void,\n) {\n const control = useControlState(props);\n\n const rootClass = computed(() =>\n bem('rp-checkbox', {\n checked: props.modelValue,\n indeterminate: props.indeterminate,\n disabled: control.disabled,\n invalid: control.invalid,\n }),\n );\n\n function onChange(e: Event) {\n emitUpdate((e.target as HTMLInputElement).checked);\n }\n\n return {\n control,\n rootClass,\n onChange,\n };\n}\n","<template>\n <label\n :class=\"rootClass\"\n :data-disabled=\"control.disabled || undefined\"\n :data-state=\"indeterminate ? 'indeterminate' : modelValue ? 'checked' : 'unchecked'\"\n >\n <input\n :id=\"control.id\"\n :name=\"name\"\n type=\"checkbox\"\n class=\"rp-checkbox__native\"\n :checked=\"modelValue\"\n :disabled=\"control.disabled || undefined\"\n :required=\"control.required || undefined\"\n :indeterminate=\"indeterminate\"\n :aria-checked=\"indeterminate ? 'mixed' : modelValue\"\n :aria-label=\"ariaLabel || undefined\"\n :aria-labelledby=\"control.ariaLabelledby\"\n :aria-describedby=\"control.ariaDescribedby\"\n :aria-invalid=\"control.invalid || undefined\"\n :aria-required=\"control.required || undefined\"\n @change=\"onChange\"\n />\n <span class=\"rp-checkbox__box\">\n <MinusIcon v-if=\"indeterminate\" class=\"rp-checkbox__icon\" />\n <CheckIcon v-else-if=\"modelValue\" class=\"rp-checkbox__icon\" />\n </span>\n <span v-if=\"$slots.default\" class=\"rp-checkbox__label\">\n <slot />\n </span>\n </label>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { CheckIcon, MinusIcon } from '@/components/_internal/icons';\nimport { useCheckbox } from './useCheckbox';\nimport type { CheckboxProps } from './types';\n\ndefineOptions({ name: 'RpCheckbox' });\n\nconst props = withDefaults(defineProps<CheckboxProps>(), {\n disabled: undefined,\n required: undefined,\n invalid: undefined,\n indeterminate: false,\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean];\n}>();\n\nconst { control, rootClass, onChange } = useCheckbox(props, (value) => {\n emit('update:modelValue', value);\n});\n</script>\n\n<style src=\"./checkbox.scss\" lang=\"scss\" scoped></style>\n","<template>\n <label\n :class=\"rootClass\"\n :data-disabled=\"control.disabled || undefined\"\n :data-state=\"indeterminate ? 'indeterminate' : modelValue ? 'checked' : 'unchecked'\"\n >\n <input\n :id=\"control.id\"\n :name=\"name\"\n type=\"checkbox\"\n class=\"rp-checkbox__native\"\n :checked=\"modelValue\"\n :disabled=\"control.disabled || undefined\"\n :required=\"control.required || undefined\"\n :indeterminate=\"indeterminate\"\n :aria-checked=\"indeterminate ? 'mixed' : modelValue\"\n :aria-label=\"ariaLabel || undefined\"\n :aria-labelledby=\"control.ariaLabelledby\"\n :aria-describedby=\"control.ariaDescribedby\"\n :aria-invalid=\"control.invalid || undefined\"\n :aria-required=\"control.required || undefined\"\n @change=\"onChange\"\n />\n <span class=\"rp-checkbox__box\">\n <MinusIcon v-if=\"indeterminate\" class=\"rp-checkbox__icon\" />\n <CheckIcon v-else-if=\"modelValue\" class=\"rp-checkbox__icon\" />\n </span>\n <span v-if=\"$slots.default\" class=\"rp-checkbox__label\">\n <slot />\n </span>\n </label>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { CheckIcon, MinusIcon } from '@/components/_internal/icons';\nimport { useCheckbox } from './useCheckbox';\nimport type { CheckboxProps } from './types';\n\ndefineOptions({ name: 'RpCheckbox' });\n\nconst props = withDefaults(defineProps<CheckboxProps>(), {\n disabled: undefined,\n required: undefined,\n invalid: undefined,\n indeterminate: false,\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean];\n}>();\n\nconst { control, rootClass, onChange } = useCheckbox(props, (value) => {\n emit('update:modelValue', value);\n});\n</script>\n\n<style src=\"./checkbox.scss\" lang=\"scss\" scoped></style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AIKA,SAAgB,YACZ,OACA,YACF;CACE,MAAM,UAAU,gBAAgB,KAAK;CAErC,MAAM,YAAY,eACd,IAAI,eAAe;EACf,SAAS,MAAM;EACf,eAAe,MAAM;EACrB,UAAU,QAAQ;EAClB,SAAS,QAAQ;CACrB,CAAC,CACL;CAEA,SAAS,SAAS,GAAU;EACxB,WAAY,EAAE,OAA4B,OAAO;CACrD;CAEA,OAAO;EACH;EACA;EACA;CACJ;AACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECWA,MAAM,QAAQ;EAOd,MAAM,OAAO;EAIb,MAAM,EAAE,SAAS,WAAW,aAAa,YAAY,QAAQ,UAAU;GACnE,KAAK,qBAAqB,KAAK;EACnC,CAAC;;;;SAhCY,WAAM,MAAE,MAAA,QAAA,CAAQ,CAAA,CAAA,CAAA;;;;;;;iBAnBb,MAAA,SAAA,CAAS;gBAChB,iBAAe,qBAAoB,KAAA,CAAS;gBAC5C,cAAY,iBAAa,kBAAqB,cAAU,YAAA,WAAA;eAGpD,MAAI,SAAO,EAAA;eACX,QAAM,QAAA,IAAI;eAGV,WAAS,WAAU;eACnB,YAAU,qBAAoB,KAAA,CAAS;eACvC,YAAU,qBAAoB,KAAA,CAAS;eACvC,iBAAe,cAAa;eAC5B,gBAAc,iBAAa,UAAa,WAAU;eAClD,cAAY,QAAA,aAAa,KAAA,CAAS;eAClC,mBAAiB,SAAO,cAAA;eACxB,oBAAkB,SAAO,eAAA;eACzB,gBAAc,SAAO,WAAY,KAAA,CAAS;eAC1C,iBAAe,qBAAoB,KAAA,CAAS;;;iBAI5B,QAAA,qBAAa;sDAAE,OAAM,oBAAmB,CAAA;0BACnC,QAAA,kBAAU;sDAAE,OAAM,oBAAmB,CAAA;;;iBAEnD,OAAM,eAAA"}
1
+ {"version":3,"file":"checkbox.js","names":[],"sources":["../src/components/checkbox/useCheckbox.ts","../src/components/checkbox/checkbox.vue","../src/components/checkbox/checkbox.vue"],"sourcesContent":["import { computed } from 'vue';\nimport { useControlState } from '@/composables/useControlState';\nimport { bem } from '@/utils/bem';\nimport type { CheckboxProps } from './types';\n\nexport function useCheckbox(props: Readonly<CheckboxProps>, emitUpdate: (value: boolean) => void) {\n const control = useControlState(props);\n\n const rootClass = computed(() =>\n bem('rp-checkbox', {\n checked: props.modelValue,\n indeterminate: props.indeterminate,\n disabled: control.disabled,\n invalid: control.invalid,\n [props.variant ?? '']: Boolean(props.variant),\n [`color-${props.color}`]: Boolean(props.color),\n [`size-${props.size}`]: Boolean(props.size),\n [`radius-${props.radius}`]: Boolean(props.radius),\n }),\n );\n\n function onChange(e: Event) {\n emitUpdate((e.target as HTMLInputElement).checked);\n }\n\n return {\n control,\n rootClass,\n onChange,\n };\n}\n","<template>\n <label\n :class=\"rootClass\"\n :data-disabled=\"control.disabled || undefined\"\n :data-state=\"indeterminate ? 'indeterminate' : modelValue ? 'checked' : 'unchecked'\"\n >\n <input\n :id=\"control.id\"\n :name=\"name\"\n type=\"checkbox\"\n class=\"rp-checkbox__native\"\n :checked=\"modelValue\"\n :disabled=\"control.disabled || undefined\"\n :required=\"control.required || undefined\"\n :indeterminate=\"indeterminate\"\n :aria-checked=\"indeterminate ? 'mixed' : modelValue\"\n :aria-label=\"ariaLabel || undefined\"\n :aria-labelledby=\"control.ariaLabelledby\"\n :aria-describedby=\"control.ariaDescribedby\"\n :aria-invalid=\"control.invalid || undefined\"\n :aria-required=\"control.required || undefined\"\n @change=\"onChange\"\n />\n <span class=\"rp-checkbox__box\">\n <Transition name=\"rp-checkbox-icon\" mode=\"out-in\">\n <MinusIcon v-if=\"indeterminate\" key=\"minus\" class=\"rp-checkbox__icon\" />\n <CheckIcon v-else-if=\"modelValue\" key=\"check\" class=\"rp-checkbox__icon\" />\n </Transition>\n </span>\n <span v-if=\"$slots.default\" class=\"rp-checkbox__label\">\n <slot />\n </span>\n </label>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport CheckIcon from '~icons/lucide/check';\nimport MinusIcon from '~icons/lucide/minus';\nimport { useCheckbox } from './useCheckbox';\nimport type { CheckboxProps } from './types';\n\ndefineOptions({ name: 'RpCheckbox' });\n\nconst props = withDefaults(defineProps<CheckboxProps>(), {\n disabled: undefined,\n required: undefined,\n invalid: undefined,\n indeterminate: false,\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean];\n}>();\n\nconst { control, rootClass, onChange } = useCheckbox(props, (value) => {\n emit('update:modelValue', value);\n});\n</script>\n\n<style src=\"./checkbox.scss\" lang=\"scss\" scoped></style>\n","<template>\n <label\n :class=\"rootClass\"\n :data-disabled=\"control.disabled || undefined\"\n :data-state=\"indeterminate ? 'indeterminate' : modelValue ? 'checked' : 'unchecked'\"\n >\n <input\n :id=\"control.id\"\n :name=\"name\"\n type=\"checkbox\"\n class=\"rp-checkbox__native\"\n :checked=\"modelValue\"\n :disabled=\"control.disabled || undefined\"\n :required=\"control.required || undefined\"\n :indeterminate=\"indeterminate\"\n :aria-checked=\"indeterminate ? 'mixed' : modelValue\"\n :aria-label=\"ariaLabel || undefined\"\n :aria-labelledby=\"control.ariaLabelledby\"\n :aria-describedby=\"control.ariaDescribedby\"\n :aria-invalid=\"control.invalid || undefined\"\n :aria-required=\"control.required || undefined\"\n @change=\"onChange\"\n />\n <span class=\"rp-checkbox__box\">\n <Transition name=\"rp-checkbox-icon\" mode=\"out-in\">\n <MinusIcon v-if=\"indeterminate\" key=\"minus\" class=\"rp-checkbox__icon\" />\n <CheckIcon v-else-if=\"modelValue\" key=\"check\" class=\"rp-checkbox__icon\" />\n </Transition>\n </span>\n <span v-if=\"$slots.default\" class=\"rp-checkbox__label\">\n <slot />\n </span>\n </label>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport CheckIcon from '~icons/lucide/check';\nimport MinusIcon from '~icons/lucide/minus';\nimport { useCheckbox } from './useCheckbox';\nimport type { CheckboxProps } from './types';\n\ndefineOptions({ name: 'RpCheckbox' });\n\nconst props = withDefaults(defineProps<CheckboxProps>(), {\n disabled: undefined,\n required: undefined,\n invalid: undefined,\n indeterminate: false,\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean];\n}>();\n\nconst { control, rootClass, onChange } = useCheckbox(props, (value) => {\n emit('update:modelValue', value);\n});\n</script>\n\n<style src=\"./checkbox.scss\" lang=\"scss\" scoped></style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,SAAgB,YAAY,OAAgC,YAAsC;CAC9F,MAAM,UAAU,gBAAgB,KAAK;CAErC,MAAM,YAAY,eACd,IAAI,eAAe;EACf,SAAS,MAAM;EACf,eAAe,MAAM;EACrB,UAAU,QAAQ;EAClB,SAAS,QAAQ;GAChB,MAAM,WAAW,KAAK,QAAQ,MAAM,OAAO;GAC3C,SAAS,MAAM,UAAU,QAAQ,MAAM,KAAK;GAC5C,QAAQ,MAAM,SAAS,QAAQ,MAAM,IAAI;GACzC,UAAU,MAAM,WAAW,QAAQ,MAAM,MAAM;CACpD,CAAC,CACL;CAEA,SAAS,SAAS,GAAU;EACxB,WAAY,EAAE,OAA4B,OAAO;CACrD;CAEA,OAAO;EACH;EACA;EACA;CACJ;AACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECaA,MAAM,QAAQ;EAOd,MAAM,OAAO;EAIb,MAAM,EAAE,SAAS,WAAW,aAAa,YAAY,QAAQ,UAAU;GACnE,KAAK,qBAAqB,KAAK;EACnC,CAAC;;;;SAnCY,WAAM,MAAE,MAAA,QAAA,CAAQ,CAAA,CAAA,CAAA;;;;;;;iBAnBb,MAAA,SAAA,CAAS;gBAChB,iBAAe,qBAAoB,KAAA,CAAS;gBAC5C,cAAY,iBAAa,kBAAqB,cAAU,YAAA,WAAA;eAGpD,MAAI,SAAO,EAAA;eACX,QAAM,QAAA,IAAI;eAGV,WAAS,WAAU;eACnB,YAAU,qBAAoB,KAAA,CAAS;eACvC,YAAU,qBAAoB,KAAA,CAAS;eACvC,iBAAe,cAAa;eAC5B,gBAAc,iBAAa,UAAa,WAAU;eAClD,cAAY,QAAA,aAAa,KAAA,CAAS;eAClC,mBAAiB,SAAO,cAAA;eACxB,oBAAkB,SAAO,eAAA;eACzB,gBAAc,SAAO,WAAY,KAAA,CAAS;eAC1C,iBAAe,qBAAoB,KAAA,CAAS;;;;GAIjC,MAAK;GAAmB,MAAK;;yBACpB,QAAA,qBAAa;uDAAc,OAAM,oBAAmB,CAAA;oBAAjC,OAAO;;2BACrB,QAAA,kBAAU;uDAAc,OAAM,oBAAmB,CAAA;oBAAjC,OAAO;;;;;iBAGzC,OAAM,eAAA"}
@@ -6,11 +6,11 @@ declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup
6
6
  expose: (exposed: {}) => void;
7
7
  attrs: any;
8
8
  slots: {
9
- prefix?: (props: {}) => any;
9
+ left?: (props: {}) => any;
10
10
  } & {
11
11
  default?: (props: {}) => any;
12
12
  } & {
13
- suffix?: (props: {}) => any;
13
+ right?: (props: {}) => any;
14
14
  };
15
15
  emit: {};
16
16
  }>) => import('vue').VNode & {
@@ -1,2 +1,2 @@
1
1
  export { default as Button } from './button';
2
- export type { ButtonProps } from './types';
2
+ export type { ButtonColor, ButtonProps, ButtonRadius, ButtonSize, ButtonVariant } from './types';
@@ -1,5 +1,12 @@
1
+ export type ButtonColor = 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info';
2
+ export type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
3
+ export type ButtonRadius = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4
+ export type ButtonVariant = 'solid' | 'subtle' | 'surface' | 'outline' | 'ghost' | 'plain';
1
5
  export interface ButtonProps {
2
- variant?: 'solid' | 'ghost';
6
+ variant?: ButtonVariant;
7
+ color?: ButtonColor;
8
+ size?: ButtonSize;
9
+ radius?: ButtonRadius;
3
10
  type?: 'button' | 'submit' | 'reset';
4
11
  disabled?: boolean;
5
12
  loading?: boolean;
@@ -1,2 +1,2 @@
1
1
  export { default as Checkbox } from './checkbox';
2
- export type { CheckboxProps } from './types';
2
+ export type { CheckboxColor, CheckboxProps, CheckboxRadius, CheckboxSize, CheckboxVariant, } from './types';
@@ -1,7 +1,15 @@
1
+ export type CheckboxColor = 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info';
2
+ export type CheckboxSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
3
+ export type CheckboxRadius = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4
+ export type CheckboxVariant = 'solid' | 'outline';
1
5
  export interface CheckboxProps {
2
6
  id?: string;
3
7
  name?: string;
4
8
  modelValue: boolean;
9
+ variant?: CheckboxVariant;
10
+ color?: CheckboxColor;
11
+ size?: CheckboxSize;
12
+ radius?: CheckboxRadius;
5
13
  disabled?: boolean;
6
14
  required?: boolean;
7
15
  invalid?: boolean;
@@ -1,2 +1,2 @@
1
1
  export { default as Input } from './input';
2
- export type { InputProps } from './types';
2
+ export type { InputProps, InputRadius, InputSize } from './types';
@@ -7,7 +7,11 @@ declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup
7
7
  } ? P : {});
8
8
  expose: (exposed: {}) => void;
9
9
  attrs: any;
10
- slots: {};
10
+ slots: {
11
+ left?: (props: {}) => any;
12
+ } & {
13
+ right?: (props: {}) => any;
14
+ };
11
15
  emit: (evt: "update:modelValue", value: string) => void;
12
16
  }>) => import('vue').VNode & {
13
17
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
@@ -1,13 +1,18 @@
1
+ export type InputRadius = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
2
+ export type InputSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
1
3
  export interface InputProps {
2
4
  id?: string;
3
5
  name?: string;
4
6
  modelValue: string;
5
7
  type?: 'text' | 'password' | 'email' | 'number' | 'tel' | 'url';
8
+ size?: InputSize;
9
+ radius?: InputRadius;
6
10
  placeholder?: string;
7
11
  disabled?: boolean;
8
12
  readonly?: boolean;
9
13
  required?: boolean;
10
14
  invalid?: boolean;
15
+ valid?: boolean;
11
16
  ariaLabel?: string;
12
17
  describedby?: string;
13
18
  labelledby?: string;
@@ -1,3 +1,3 @@
1
1
  export { default as Radio } from './radio';
2
2
  export { default as RadioGroup } from './radio-group';
3
- export type { RadioProps, RadioGroupProps } from './types';
3
+ export type { RadioColor, RadioGroupProps, RadioProps, RadioSize, RadioVariant } from './types';