ropav 0.0.6 → 0.0.8

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 (123) hide show
  1. package/dist/_plugin-vue_export-helper.js +1 -11
  2. package/dist/accordion.css +112 -0
  3. package/dist/accordion.js +358 -0
  4. package/dist/badge.css +169 -0
  5. package/dist/badge.js +101 -0
  6. package/dist/bem.js +9 -0
  7. package/dist/button-group.css +8 -8
  8. package/dist/button-group.js +2 -3
  9. package/dist/button.js +3 -4
  10. package/dist/card.css +40 -20
  11. package/dist/card.js +71 -39
  12. package/dist/checkbox.js +2 -3
  13. package/dist/collapse.css +32 -0
  14. package/dist/collapse.js +62 -0
  15. package/dist/componentColors.js +0 -2
  16. package/dist/components/accordion/accordion-item.d.ts +40 -0
  17. package/dist/components/accordion/accordion.d.ts +23 -0
  18. package/dist/components/accordion/index.d.ts +4 -0
  19. package/dist/components/accordion/index.js +2 -0
  20. package/dist/components/accordion/types.d.ts +100 -0
  21. package/dist/components/accordion/useAccordion.d.ts +3 -0
  22. package/dist/components/badge/badge.d.ts +25 -0
  23. package/dist/components/badge/index.d.ts +3 -0
  24. package/dist/components/badge/index.js +2 -0
  25. package/dist/components/badge/types.d.ts +16 -0
  26. package/dist/components/badge/useBadgeColor.d.ts +8 -0
  27. package/dist/components/card/card.d.ts +4 -0
  28. package/dist/components/card/types.d.ts +4 -0
  29. package/dist/components/collapse/collapse.d.ts +36 -0
  30. package/dist/components/collapse/index.d.ts +3 -0
  31. package/dist/components/collapse/index.js +3 -0
  32. package/dist/components/collapse/types.d.ts +74 -0
  33. package/dist/components/collapse/useCollapse.d.ts +2 -0
  34. package/dist/components/dropdown-menu/dropdown-menu-items.d.ts +16 -0
  35. package/dist/components/dropdown-menu/dropdown-menu-utils.d.ts +23 -0
  36. package/dist/components/dropdown-menu/dropdown-menu.d.ts +26 -0
  37. package/dist/components/dropdown-menu/index.d.ts +3 -0
  38. package/dist/components/dropdown-menu/index.js +2 -0
  39. package/dist/components/dropdown-menu/types.d.ts +104 -0
  40. package/dist/components/dropdown-menu/useDropdownMenu.d.ts +32 -0
  41. package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +30 -0
  42. package/dist/components/dropdown-menu/useDropdownMenuDom.d.ts +28 -0
  43. package/dist/components/dropdown-menu/useDropdownMenuHoverIntent.d.ts +24 -0
  44. package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +51 -0
  45. package/dist/components/dropdown-menu/useDropdownMenuNavigation.d.ts +16 -0
  46. package/dist/components/dropdown-menu/useDropdownMenuRenderItems.d.ts +25 -0
  47. package/dist/components/dropdown-menu/useDropdownSubmenus.d.ts +18 -0
  48. package/dist/components/field/field.d.ts +2 -2
  49. package/dist/components/field/useField.d.ts +17 -0
  50. package/dist/components/input/useInput.d.ts +8 -0
  51. package/dist/components/modal/index.d.ts +2 -0
  52. package/dist/components/modal/index.js +2 -0
  53. package/dist/components/modal/modal.d.ts +42 -0
  54. package/dist/components/modal/types.d.ts +31 -0
  55. package/dist/components/modal/useModal.d.ts +29 -0
  56. package/dist/components/overlay/index.d.ts +2 -0
  57. package/dist/components/overlay/index.js +2 -0
  58. package/dist/components/overlay/overlay.d.ts +19 -0
  59. package/dist/components/overlay/types.d.ts +12 -0
  60. package/dist/components/overlay/useOverlay.d.ts +7 -0
  61. package/dist/components/popover/index.d.ts +2 -0
  62. package/dist/components/popover/index.js +2 -0
  63. package/dist/components/popover/popover.d.ts +43 -0
  64. package/dist/components/popover/types.d.ts +43 -0
  65. package/dist/components/popover/usePopover.d.ts +23 -0
  66. package/dist/components/tabs/index.d.ts +6 -0
  67. package/dist/components/tabs/index.js +2 -0
  68. package/dist/components/tabs/tabs-content.d.ts +24 -0
  69. package/dist/components/tabs/tabs-list.d.ts +26 -0
  70. package/dist/components/tabs/tabs-trigger.d.ts +29 -0
  71. package/dist/components/tabs/tabs.d.ts +31 -0
  72. package/dist/components/tabs/types.d.ts +160 -0
  73. package/dist/components/tabs/useTabs.d.ts +5 -0
  74. package/dist/dropdown-menu.css +159 -0
  75. package/dist/dropdown-menu.js +901 -0
  76. package/dist/field.css +11 -8
  77. package/dist/field.js +93 -52
  78. package/dist/icon-button.css +1 -1
  79. package/dist/icon-button.js +3 -4
  80. package/dist/index.d.ts +8 -0
  81. package/dist/index.js +12 -1
  82. package/dist/input.css +25 -25
  83. package/dist/input.js +57 -40
  84. package/dist/modal.css +134 -0
  85. package/dist/modal.js +427 -0
  86. package/dist/overlay.css +28 -0
  87. package/dist/overlay.js +82 -0
  88. package/dist/popover.css +75 -0
  89. package/dist/popover.js +377 -0
  90. package/dist/progress.js +2 -3
  91. package/dist/radio.js +4 -11
  92. package/dist/select.js +8 -39
  93. package/dist/slider.js +2 -3
  94. package/dist/switch.js +2 -3
  95. package/dist/tabs.css +279 -0
  96. package/dist/tabs.js +513 -0
  97. package/dist/textarea.js +2 -3
  98. package/dist/tooltip.js +2 -3
  99. package/dist/useButtonColor.js +0 -2
  100. package/dist/useClickOutside.js +24 -0
  101. package/dist/useCollapse.js +92 -0
  102. package/dist/useControlState.js +0 -2
  103. package/dist/useRequiredInject.js +9 -0
  104. package/dist/x.js +12 -0
  105. package/package.json +40 -4
  106. package/dist/_plugin-vue_export-helper.js.map +0 -1
  107. package/dist/button-group.js.map +0 -1
  108. package/dist/button.js.map +0 -1
  109. package/dist/card.js.map +0 -1
  110. package/dist/checkbox.js.map +0 -1
  111. package/dist/componentColors.js.map +0 -1
  112. package/dist/field.js.map +0 -1
  113. package/dist/icon-button.js.map +0 -1
  114. package/dist/input.js.map +0 -1
  115. package/dist/progress.js.map +0 -1
  116. package/dist/radio.js.map +0 -1
  117. package/dist/select.js.map +0 -1
  118. package/dist/slider.js.map +0 -1
  119. package/dist/switch.js.map +0 -1
  120. package/dist/textarea.js.map +0 -1
  121. package/dist/tooltip.js.map +0 -1
  122. package/dist/useButtonColor.js.map +0 -1
  123. package/dist/useControlState.js.map +0 -1
package/dist/field.css CHANGED
@@ -1,4 +1,4 @@
1
- .rp-field[data-v-b8c3dcbe] {
1
+ .rp-field[data-v-0d027ead] {
2
2
  --_rp-field-danger: var(--rp-color-danger);
3
3
  display: grid;
4
4
  gap: var(--rp-spacing-1);
@@ -6,10 +6,10 @@
6
6
  font-family: var(--rp-font-family);
7
7
  color: var(--rp-color-text);
8
8
  }
9
- html.dark .rp-field[data-v-b8c3dcbe] {
9
+ html.dark .rp-field[data-v-0d027ead] {
10
10
  --_rp-field-danger: var(--rp-color-danger-fg);
11
11
  }
12
- .rp-field__label[data-v-b8c3dcbe] {
12
+ .rp-field__label[data-v-0d027ead] {
13
13
  display: inline-flex;
14
14
  width: fit-content;
15
15
  align-items: center;
@@ -19,22 +19,25 @@ html.dark .rp-field[data-v-b8c3dcbe] {
19
19
  font-weight: var(--rp-font-weight-medium);
20
20
  line-height: var(--rp-line-height-normal);
21
21
  }
22
- .rp-field__required[data-v-b8c3dcbe] {
22
+ .rp-field__required[data-v-0d027ead] {
23
23
  color: var(--_rp-field-danger);
24
24
  line-height: var(--rp-line-height-none);
25
25
  }
26
- .rp-field__control[data-v-b8c3dcbe] {
26
+ .rp-field__label + .rp-field__control[data-v-0d027ead] {
27
+ margin-block-start: var(--rp-spacing-1);
28
+ }
29
+ .rp-field__control[data-v-0d027ead] {
27
30
  min-width: 0;
28
31
  }
29
- .rp-field__description[data-v-b8c3dcbe], .rp-field__message[data-v-b8c3dcbe] {
32
+ .rp-field__description[data-v-0d027ead], .rp-field__message[data-v-0d027ead] {
30
33
  margin: 0;
31
34
  color: var(--rp-color-text-secondary);
32
35
  font-size: var(--rp-font-size-sm);
33
36
  line-height: var(--rp-line-height-normal);
34
37
  }
35
- .rp-field--invalid .rp-field__message[data-v-b8c3dcbe] {
38
+ .rp-field--invalid .rp-field__message[data-v-0d027ead] {
36
39
  color: var(--_rp-field-danger);
37
40
  }
38
- .rp-field--disabled .rp-field__label[data-v-b8c3dcbe], .rp-field--disabled .rp-field__description[data-v-b8c3dcbe], .rp-field--disabled .rp-field__message[data-v-b8c3dcbe] {
41
+ .rp-field--disabled .rp-field__label[data-v-0d027ead], .rp-field--disabled .rp-field__description[data-v-0d027ead], .rp-field--disabled .rp-field__message[data-v-0d027ead] {
39
42
  color: var(--rp-color-text-disabled);
40
43
  }
package/dist/field.js CHANGED
@@ -1,13 +1,81 @@
1
1
  import './field.css';
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, setText, template, toDisplayString, useId, useSlots } from "vue";
2
+ import { t as bem } from "./bem.js";
3
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
4
+ import { child, computed, createIf, createInvoker, createSlot, defineVaporComponent, delegateEvents, renderEffect, setClass, setInsertionState, setProp, setText, template, toDisplayString, unref, useId, useSlots } from "vue";
5
+ //#region src/components/field/useField.ts
6
+ var INTERACTIVE_LABEL_SELECTOR = [
7
+ "button",
8
+ "a[href]",
9
+ "input",
10
+ "select",
11
+ "textarea",
12
+ "[contenteditable=\"true\"]",
13
+ "[tabindex]:not([tabindex=\"-1\"])"
14
+ ].join(",");
15
+ function isInteractiveLabelTarget(target) {
16
+ return Boolean(target.closest(INTERACTIVE_LABEL_SELECTOR));
17
+ }
18
+ function useField(props) {
19
+ const slots = useSlots();
20
+ const generatedId = useId();
21
+ const controlId = computed(() => props.id ?? `${generatedId}-control`);
22
+ const labelId = computed(() => `${controlId.value}-label`);
23
+ const descriptionId = computed(() => `${controlId.value}-description`);
24
+ const messageId = computed(() => `${controlId.value}-message`);
25
+ const isInvalid = computed(() => Boolean(props.invalid || props.error));
26
+ const messageText = computed(() => props.error || props.message);
27
+ const hasLabel = computed(() => Boolean(props.label || slots.label));
28
+ const hasDescription = computed(() => Boolean(props.description || slots.description));
29
+ const hasMessage = computed(() => Boolean(messageText.value || slots.message));
30
+ const controlLabelledby = computed(() => hasLabel.value ? labelId.value : void 0);
31
+ const controlDescribedby = computed(() => [hasDescription.value ? descriptionId.value : void 0, hasMessage.value ? messageId.value : void 0].filter(Boolean).join(" ") || void 0);
32
+ const rootClass = computed(() => bem("rp-field", {
33
+ disabled: props.disabled,
34
+ required: props.required,
35
+ invalid: isInvalid.value
36
+ }));
37
+ const controlProps = computed(() => ({
38
+ id: controlId.value,
39
+ disabled: props.disabled || void 0,
40
+ required: props.required || void 0,
41
+ invalid: isInvalid.value || void 0,
42
+ labelledby: controlLabelledby.value,
43
+ describedby: controlDescribedby.value
44
+ }));
45
+ function focusControl(e) {
46
+ if (props.disabled) return;
47
+ const target = e.target;
48
+ if (target instanceof Element && isInteractiveLabelTarget(target)) return;
49
+ const label = e.currentTarget;
50
+ const control = label instanceof HTMLLabelElement ? label.control ?? label.ownerDocument.getElementById(controlId.value) : void 0;
51
+ if (control instanceof HTMLElement) control.focus();
52
+ }
53
+ return {
54
+ controlId,
55
+ labelId,
56
+ descriptionId,
57
+ messageId,
58
+ isInvalid,
59
+ messageText,
60
+ hasLabel,
61
+ hasDescription,
62
+ hasMessage,
63
+ controlLabelledby,
64
+ controlDescribedby,
65
+ rootClass,
66
+ controlProps,
67
+ focusControl
68
+ };
69
+ }
70
+ //#endregion
4
71
  //#region src/components/field/field.vue?vue&type=script&setup=true&vapor=true&lang.ts
5
72
  var t0 = template(" ");
6
- var t1 = template("<span data-v-b8c3dcbe class=rp-field__required aria-hidden=true>*", 2);
7
- var t2 = template("<label data-v-b8c3dcbe class=rp-field__label>");
8
- var t3 = template("<p data-v-b8c3dcbe class=rp-field__description>");
9
- var t4 = template("<p data-v-b8c3dcbe class=rp-field__message>");
10
- var t5 = template("<div data-v-b8c3dcbe><div data-v-b8c3dcbe class=rp-field__control></div>", 1);
73
+ var t1 = template("<span data-v-0d027ead class=rp-field__required aria-hidden=true>*", 2);
74
+ var t2 = template("<label data-v-0d027ead class=rp-field__label>");
75
+ var t3 = template("<p data-v-0d027ead class=rp-field__description>");
76
+ var t4 = template("<p data-v-0d027ead class=rp-field__message>");
77
+ var t5 = template("<div data-v-0d027ead><div data-v-0d027ead class=rp-field__control></div>", 1);
78
+ delegateEvents("mousedown");
11
79
  //#endregion
12
80
  //#region src/components/field/field.vue
13
81
  var field_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -33,42 +101,16 @@ var field_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
33
101
  }
34
102
  },
35
103
  setup(__props) {
36
- const props = __props;
37
- const slots = useSlots();
38
- const generatedId = useId();
39
- const controlId = computed(() => props.id ?? `${generatedId}-control`);
40
- const labelId = computed(() => `${controlId.value}-label`);
41
- const descriptionId = computed(() => `${controlId.value}-description`);
42
- const messageId = computed(() => `${controlId.value}-message`);
43
- const isInvalid = computed(() => Boolean(props.invalid || props.error));
44
- const messageText = computed(() => props.error || props.message);
45
- const hasLabel = computed(() => Boolean(props.label || slots.label));
46
- const hasDescription = computed(() => Boolean(props.description || slots.description));
47
- const hasMessage = computed(() => Boolean(messageText.value || slots.message));
48
- const controlLabelledby = computed(() => hasLabel.value ? labelId.value : void 0);
49
- const controlDescribedby = computed(() => [hasDescription.value ? descriptionId.value : void 0, hasMessage.value ? messageId.value : void 0].filter(Boolean).join(" ") || void 0);
50
- const rootClass = computed(() => bem("rp-field", {
51
- disabled: props.disabled,
52
- required: props.required,
53
- invalid: isInvalid.value
54
- }));
55
- const controlProps = computed(() => ({
56
- id: controlId.value,
57
- disabled: props.disabled || void 0,
58
- required: props.required || void 0,
59
- invalid: isInvalid.value || void 0,
60
- labelledby: controlLabelledby.value,
61
- describedby: controlDescribedby.value
62
- }));
104
+ const { controlId, labelId, descriptionId, messageId, isInvalid, messageText, hasLabel, hasDescription, hasMessage, controlLabelledby, controlDescribedby, rootClass, controlProps, focusControl } = useField(__props);
63
105
  const n23 = t5();
64
106
  const n10 = child(n23, 1);
65
- renderEffect(() => setClass(n23, rootClass.value));
107
+ renderEffect(() => setClass(n23, unref(rootClass)));
66
108
  setInsertionState(n23, 0, 0);
67
- createIf(() => hasLabel.value, () => {
109
+ createIf(() => unref(hasLabel), () => {
68
110
  const n8 = t2();
69
111
  renderEffect(() => {
70
- setProp(n8, "id", labelId.value);
71
- setProp(n8, "for", controlId.value);
112
+ setProp(n8, "id", unref(labelId));
113
+ setProp(n8, "for", unref(controlId));
72
114
  });
73
115
  setInsertionState(n8, null, 0);
74
116
  createSlot("label", null, () => {
@@ -80,22 +122,23 @@ var field_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
80
122
  createIf(() => __props.required, () => {
81
123
  return t1();
82
124
  });
125
+ n8.$evtmousedown = createInvoker((e) => unref(focusControl)(e));
83
126
  return n8;
84
127
  });
85
128
  setInsertionState(n10, null, 0);
86
129
  createSlot("default", {
87
- id: () => controlId.value,
130
+ id: () => unref(controlId),
88
131
  disabled: () => __props.disabled || void 0,
89
132
  required: () => __props.required || void 0,
90
- invalid: () => isInvalid.value || void 0,
91
- labelledby: () => controlLabelledby.value,
92
- describedby: () => controlDescribedby.value,
93
- controlProps: () => controlProps.value
133
+ invalid: () => unref(isInvalid) || void 0,
134
+ labelledby: () => unref(controlLabelledby),
135
+ describedby: () => unref(controlDescribedby),
136
+ controlProps: () => unref(controlProps)
94
137
  }, null, 1);
95
138
  setInsertionState(n23, null, 2);
96
- createIf(() => hasDescription.value, () => {
139
+ createIf(() => unref(hasDescription), () => {
97
140
  const n16 = t3();
98
- renderEffect(() => setProp(n16, "id", descriptionId.value));
141
+ renderEffect(() => setProp(n16, "id", unref(descriptionId)));
99
142
  setInsertionState(n16, null, 0);
100
143
  createSlot("description", null, () => {
101
144
  const n15 = t0();
@@ -105,24 +148,22 @@ var field_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
105
148
  return n16;
106
149
  });
107
150
  setInsertionState(n23, null, 3);
108
- createIf(() => hasMessage.value, () => {
151
+ createIf(() => unref(hasMessage), () => {
109
152
  const n22 = t4();
110
153
  renderEffect(() => {
111
- setProp(n22, "id", messageId.value);
112
- setProp(n22, "role", isInvalid.value ? "alert" : void 0);
154
+ setProp(n22, "id", unref(messageId));
155
+ setProp(n22, "role", unref(isInvalid) ? "alert" : void 0);
113
156
  });
114
157
  setInsertionState(n22, null, 0);
115
158
  createSlot("message", null, () => {
116
159
  const n21 = t0();
117
- renderEffect(() => setText(n21, toDisplayString(messageText.value)));
160
+ renderEffect(() => setText(n21, toDisplayString(unref(messageText))));
118
161
  return n21;
119
162
  }, 1);
120
163
  return n22;
121
164
  });
122
165
  return n23;
123
166
  }
124
- }), [["__scopeId", "data-v-b8c3dcbe"]]);
167
+ }), [["__scopeId", "data-v-0d027ead"]]);
125
168
  //#endregion
126
169
  export { field_default as t };
127
-
128
- //# sourceMappingURL=field.js.map
@@ -352,7 +352,7 @@ to {
352
352
  justify-content: center;
353
353
  line-height: 0;
354
354
  }
355
- .rp-icon-button__icon svg[data-v-7005752e-s] {
355
+ .rp-icon-button__icon[data-v-7005752e] > svg {
356
356
  display: block;
357
357
  width: 1em;
358
358
  height: 1em;
@@ -1,7 +1,8 @@
1
1
  import './icon-button.css';
2
- import { n as loader_circle_default, t as getButtonColorStyle } from "./useButtonColor.js";
2
+ import { t as bem } from "./bem.js";
3
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
3
4
  import { r as isComponentPresetColor } from "./componentColors.js";
4
- import { n as bem, t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
5
+ import { n as loader_circle_default, t as getButtonColorStyle } from "./useButtonColor.js";
5
6
  import { computed, createComponent, createIf, createSlot, defineVaporComponent, renderEffect, setAttr, setClass, setInsertionState, setProp, setStyle, template, unref } from "vue";
6
7
  //#region src/components/icon-button/icon-button.vue?vue&type=script&setup=true&vapor=true&lang.ts
7
8
  var t0 = template("<span data-v-7005752e class=rp-icon-button__icon aria-hidden=true>");
@@ -63,5 +64,3 @@ var icon_button_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
63
64
  }), [["__scopeId", "data-v-7005752e"]]);
64
65
  //#endregion
65
66
  export { icon_button_default as t };
66
-
67
- //# sourceMappingURL=icon-button.js.map
package/dist/index.d.ts CHANGED
@@ -1,14 +1,22 @@
1
+ export * from './components/accordion';
2
+ export * from './components/badge';
1
3
  export * from './components/button';
2
4
  export * from './components/button-group';
3
5
  export * from './components/card';
4
6
  export * from './components/checkbox';
7
+ export * from './components/collapse';
8
+ export * from './components/dropdown-menu';
5
9
  export * from './components/field';
6
10
  export * from './components/icon-button';
7
11
  export * from './components/input';
12
+ export * from './components/modal';
13
+ export * from './components/overlay';
14
+ export * from './components/popover';
8
15
  export * from './components/progress';
9
16
  export * from './components/radio';
10
17
  export * from './components/select';
11
18
  export * from './components/slider';
12
19
  export * from './components/switch';
20
+ export * from './components/tabs';
13
21
  export * from './components/textarea';
14
22
  export * from './components/tooltip';
package/dist/index.js CHANGED
@@ -1,16 +1,27 @@
1
+ import { t as useCollapse } from "./useCollapse.js";
2
+ import { i as useAccordionItem, n as accordion_default, r as useAccordion, t as accordion_item_default } from "./accordion.js";
3
+ import { a as badge_default, i as badgeVariants, n as badgeRadiuses, r as badgeSizes, t as badgeColors } from "./badge.js";
1
4
  import { t as button_default } from "./button.js";
2
5
  import { t as button_group_default } from "./button-group.js";
3
6
  import { t as card_default } from "./card.js";
4
7
  import { t as checkbox_default } from "./checkbox.js";
8
+ import { t as collapse_default } from "./collapse.js";
9
+ import { n as useDropdownMenu, t as dropdown_menu_default } from "./dropdown-menu.js";
5
10
  import { t as field_default } from "./field.js";
6
11
  import { t as icon_button_default } from "./icon-button.js";
12
+ import "./components/icon-button/index.js";
7
13
  import { t as input_default } from "./input.js";
14
+ import { t as overlay_default } from "./overlay.js";
15
+ import { t as modal_default } from "./modal.js";
16
+ import "./components/overlay/index.js";
17
+ import { t as popover_default } from "./popover.js";
8
18
  import { i as progress_default, n as progressRadiuses, r as progressSizes, t as progressColors } from "./progress.js";
9
19
  import { n as radio_default, t as radio_group_default } from "./radio.js";
10
20
  import { t as select_default } from "./select.js";
11
21
  import { t as tooltip_default } from "./tooltip.js";
12
22
  import { i as sliderSizes, n as sliderColors, r as sliderOrientations, t as slider_default } from "./slider.js";
13
23
  import { t as switch_default } from "./switch.js";
24
+ import { a as useTabs, c as useTabsTrigger, i as tabs_default, n as tabs_list_default, o as useTabsContent, r as tabs_content_default, s as useTabsList, t as tabs_trigger_default } from "./tabs.js";
14
25
  import { t as textarea_default } from "./textarea.js";
15
26
  import "./components/tooltip/index.js";
16
- export { button_default as Button, button_group_default as ButtonGroup, card_default as Card, checkbox_default as Checkbox, field_default as Field, icon_button_default as IconButton, input_default as Input, progress_default as Progress, radio_default as Radio, radio_group_default as RadioGroup, select_default as Select, slider_default as Slider, switch_default as Switch, textarea_default as Textarea, tooltip_default as Tooltip, progressColors, progressRadiuses, progressSizes, sliderColors, sliderOrientations, sliderSizes };
27
+ export { accordion_default as Accordion, accordion_item_default as AccordionItem, badge_default as Badge, button_default as Button, button_group_default as ButtonGroup, card_default as Card, checkbox_default as Checkbox, collapse_default as Collapse, dropdown_menu_default as DropdownMenu, field_default as Field, icon_button_default as IconButton, input_default as Input, modal_default as Modal, overlay_default as Overlay, popover_default as Popover, progress_default as Progress, radio_default as Radio, radio_group_default as RadioGroup, select_default as Select, slider_default as Slider, switch_default as Switch, tabs_default as Tabs, tabs_content_default as TabsContent, tabs_list_default as TabsList, tabs_trigger_default as TabsTrigger, textarea_default as Textarea, tooltip_default as Tooltip, badgeColors, badgeRadiuses, badgeSizes, badgeVariants, progressColors, progressRadiuses, progressSizes, sliderColors, sliderOrientations, sliderSizes, useAccordion, useAccordionItem, useCollapse, useDropdownMenu, useTabs, useTabsContent, useTabsList, useTabsTrigger };
package/dist/input.css CHANGED
@@ -1,4 +1,4 @@
1
- .rp-input[data-v-fedf15e7] {
1
+ .rp-input[data-v-e5ad32a7] {
2
2
  --_rp-input-height: var(--rp-size-control-md);
3
3
  --_rp-input-padding-x: var(--rp-spacing-3);
4
4
  --_rp-input-font-size: var(--rp-font-size-base);
@@ -19,87 +19,87 @@
19
19
  cursor: text;
20
20
  transition: border-color var(--rp-transition-fast), box-shadow var(--rp-transition-fast);
21
21
  }
22
- .rp-input[data-v-fedf15e7]:hover:not(.rp-input--disabled):not(.rp-input--invalid):not(.rp-input--valid) {
22
+ .rp-input[data-v-e5ad32a7]:hover:not(.rp-input--disabled):not(.rp-input--invalid):not(.rp-input--valid) {
23
23
  border-color: var(--rp-color-control-border-hover);
24
24
  }
25
- .rp-input[data-v-fedf15e7]:focus-within:not(.rp-input--disabled):not(.rp-input--invalid):not(.rp-input--valid) {
25
+ .rp-input[data-v-e5ad32a7]:focus-within:not(.rp-input--disabled):not(.rp-input--invalid):not(.rp-input--valid) {
26
26
  border-color: var(--rp-color-control-border-focus);
27
27
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
28
28
  }
29
- .rp-input[data-v-fedf15e7] {
29
+ .rp-input[data-v-e5ad32a7] {
30
30
  height: var(--_rp-input-height);
31
31
  padding: 0 var(--_rp-input-padding-x);
32
32
  font-size: var(--_rp-input-font-size);
33
33
  border-radius: var(--_rp-input-radius);
34
34
  }
35
- .rp-input--size-xs[data-v-fedf15e7] {
35
+ .rp-input--size-xs[data-v-e5ad32a7] {
36
36
  --_rp-input-height: calc(var(--rp-size-control-sm) - var(--rp-spacing-1));
37
37
  --_rp-input-padding-x: var(--rp-spacing-1);
38
38
  --_rp-input-font-size: var(--rp-font-size-xs);
39
39
  }
40
- .rp-input--size-sm[data-v-fedf15e7] {
40
+ .rp-input--size-sm[data-v-e5ad32a7] {
41
41
  --_rp-input-height: var(--rp-size-control-sm);
42
42
  --_rp-input-padding-x: var(--rp-spacing-2);
43
43
  --_rp-input-font-size: var(--rp-font-size-sm);
44
44
  }
45
- .rp-input--size-md[data-v-fedf15e7] {
45
+ .rp-input--size-md[data-v-e5ad32a7] {
46
46
  --_rp-input-height: var(--rp-size-control-md);
47
47
  --_rp-input-padding-x: var(--rp-spacing-3);
48
48
  --_rp-input-font-size: var(--rp-font-size-base);
49
49
  }
50
- .rp-input--size-lg[data-v-fedf15e7] {
50
+ .rp-input--size-lg[data-v-e5ad32a7] {
51
51
  --_rp-input-height: var(--rp-size-control-lg);
52
52
  --_rp-input-padding-x: var(--rp-spacing-4);
53
53
  --_rp-input-font-size: var(--rp-font-size-lg);
54
54
  }
55
- .rp-input--size-xl[data-v-fedf15e7] {
55
+ .rp-input--size-xl[data-v-e5ad32a7] {
56
56
  --_rp-input-height: calc(var(--rp-size-control-lg) + var(--rp-spacing-2));
57
57
  --_rp-input-padding-x: var(--rp-spacing-5);
58
58
  --_rp-input-font-size: var(--rp-font-size-lg);
59
59
  }
60
- .rp-input--radius-xs[data-v-fedf15e7] {
60
+ .rp-input--radius-xs[data-v-e5ad32a7] {
61
61
  --_rp-input-radius: var(--rp-radius-xs);
62
62
  }
63
- .rp-input--radius-sm[data-v-fedf15e7] {
63
+ .rp-input--radius-sm[data-v-e5ad32a7] {
64
64
  --_rp-input-radius: var(--rp-radius-sm);
65
65
  }
66
- .rp-input--radius-md[data-v-fedf15e7] {
66
+ .rp-input--radius-md[data-v-e5ad32a7] {
67
67
  --_rp-input-radius: var(--rp-radius-md);
68
68
  }
69
- .rp-input--radius-lg[data-v-fedf15e7] {
69
+ .rp-input--radius-lg[data-v-e5ad32a7] {
70
70
  --_rp-input-radius: var(--rp-radius-lg);
71
71
  }
72
- .rp-input--radius-xl[data-v-fedf15e7] {
72
+ .rp-input--radius-xl[data-v-e5ad32a7] {
73
73
  --_rp-input-radius: var(--rp-radius-xl);
74
74
  }
75
- html.dark .rp-input[data-v-fedf15e7] {
75
+ html.dark .rp-input[data-v-e5ad32a7] {
76
76
  --_rp-input-valid-border: var(--rp-color-success-fg);
77
77
  --_rp-input-valid-ring: color-mix(in srgb, var(--rp-color-success-fg) 32%, transparent);
78
78
  --_rp-input-invalid-border: var(--rp-color-danger-fg);
79
79
  --_rp-input-invalid-ring: color-mix(in srgb, var(--rp-color-danger-fg) 32%, transparent);
80
80
  }
81
- .rp-input--disabled[data-v-fedf15e7] {
81
+ .rp-input--disabled[data-v-e5ad32a7] {
82
82
  opacity: var(--rp-opacity-disabled);
83
83
  cursor: not-allowed;
84
84
  }
85
- .rp-input--valid[data-v-fedf15e7] {
85
+ .rp-input--valid[data-v-e5ad32a7] {
86
86
  border-color: var(--_rp-input-valid-border);
87
87
  }
88
- .rp-input--valid[data-v-fedf15e7]:focus-within:not(.rp-input--disabled) {
88
+ .rp-input--valid[data-v-e5ad32a7]:focus-within:not(.rp-input--disabled) {
89
89
  border-color: var(--_rp-input-valid-border);
90
90
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--_rp-input-valid-ring);
91
91
  }
92
- .rp-input--invalid[data-v-fedf15e7] {
92
+ .rp-input--invalid[data-v-e5ad32a7] {
93
93
  border-color: var(--_rp-input-invalid-border);
94
94
  }
95
- .rp-input--invalid[data-v-fedf15e7]:focus-within:not(.rp-input--disabled) {
95
+ .rp-input--invalid[data-v-e5ad32a7]:focus-within:not(.rp-input--disabled) {
96
96
  border-color: var(--_rp-input-invalid-border);
97
97
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--_rp-input-invalid-ring);
98
98
  }
99
- .rp-input--readonly[data-v-fedf15e7] {
99
+ .rp-input--readonly[data-v-e5ad32a7] {
100
100
  background-color: var(--rp-color-control-readonly-bg);
101
101
  }
102
- .rp-input__native[data-v-fedf15e7] {
102
+ .rp-input__native[data-v-e5ad32a7] {
103
103
  box-sizing: border-box;
104
104
  flex: 1;
105
105
  width: 100%;
@@ -113,13 +113,13 @@ html.dark .rp-input[data-v-fedf15e7] {
113
113
  color: var(--rp-color-control-fg);
114
114
  line-height: var(--rp-line-height-none);
115
115
  }
116
- .rp-input__native[data-v-fedf15e7]::placeholder {
116
+ .rp-input__native[data-v-e5ad32a7]::placeholder {
117
117
  color: var(--rp-color-control-placeholder);
118
118
  }
119
- .rp-input__native[data-v-fedf15e7]:disabled {
119
+ .rp-input__native[data-v-e5ad32a7]:disabled {
120
120
  cursor: not-allowed;
121
121
  }
122
- .rp-input__left[data-v-fedf15e7], .rp-input__right[data-v-fedf15e7] {
122
+ .rp-input__left[data-v-e5ad32a7], .rp-input__right[data-v-e5ad32a7] {
123
123
  display: inline-flex;
124
124
  align-items: center;
125
125
  flex-shrink: 0;
package/dist/input.js CHANGED
@@ -1,11 +1,54 @@
1
1
  import './input.css';
2
- import { n as bem, t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
+ import { t as bem } from "./bem.js";
3
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
3
4
  import { t as useControlState } from "./useControlState.js";
4
- import { child, computed, createIf, createInvoker, createSlot, defineVaporComponent, delegateEvents, renderEffect, setAttr, setClass, setInsertionState, setProp, setValue, template, unref } from "vue";
5
+ import { child, computed, createIf, createInvoker, createSlot, createTemplateRefSetter, defineVaporComponent, delegateEvents, ref, renderEffect, setAttr, setClass, setInsertionState, setProp, setValue, template, unref } from "vue";
6
+ //#region src/components/input/useInput.ts
7
+ var INTERACTIVE_SELECTOR = [
8
+ "button",
9
+ "a[href]",
10
+ `input:not(.rp-input__native)`,
11
+ "select",
12
+ "textarea",
13
+ "[contenteditable=\"true\"]",
14
+ "[tabindex]:not([tabindex=\"-1\"])"
15
+ ].join(",");
16
+ function isInteractiveElement(target) {
17
+ return Boolean(target.closest(INTERACTIVE_SELECTOR));
18
+ }
19
+ function useInput(props, emitUpdate) {
20
+ const inputRef = ref(null);
21
+ const control = useControlState(props);
22
+ const rootClass = computed(() => bem("rp-input", {
23
+ [`size-${props.size}`]: Boolean(props.size),
24
+ [`radius-${props.radius}`]: Boolean(props.radius),
25
+ disabled: control.disabled,
26
+ invalid: control.invalid,
27
+ valid: control.valid && !control.invalid,
28
+ readonly: props.readonly
29
+ }));
30
+ function onInput(e) {
31
+ emitUpdate(e.target.value);
32
+ }
33
+ function focusInput(e) {
34
+ if (control.disabled) return;
35
+ const target = e.target;
36
+ if (target instanceof Element && isInteractiveElement(target)) return;
37
+ inputRef.value?.focus();
38
+ }
39
+ return {
40
+ inputRef,
41
+ control,
42
+ rootClass,
43
+ onInput,
44
+ focusInput
45
+ };
46
+ }
47
+ //#endregion
5
48
  //#region src/components/input/input.vue?vue&type=script&setup=true&vapor=true&lang.ts
6
- var t0 = template("<span data-v-fedf15e7 class=rp-input__left>");
7
- var t1 = template("<span data-v-fedf15e7 class=rp-input__right>");
8
- var t2 = template("<label data-v-fedf15e7><input data-v-fedf15e7 class=rp-input__native>", 1);
49
+ var t0 = template("<span data-v-e5ad32a7 class=rp-input__left>");
50
+ var t1 = template("<span data-v-e5ad32a7 class=rp-input__right>");
51
+ var t2 = template("<label data-v-e5ad32a7><input data-v-e5ad32a7 class=rp-input__native>", 1);
9
52
  delegateEvents("input", "mousedown");
10
53
  //#endregion
11
54
  //#region src/components/input/input.vue
@@ -48,38 +91,13 @@ var input_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
48
91
  setup(__props, { emit: __emit, slots: $slots }) {
49
92
  const props = __props;
50
93
  const emit = __emit;
51
- const control = useControlState(props);
52
- const rootClass = computed(() => bem("rp-input", {
53
- [`size-${props.size}`]: Boolean(props.size),
54
- [`radius-${props.radius}`]: Boolean(props.radius),
55
- disabled: control.disabled,
56
- invalid: control.invalid,
57
- valid: control.valid && !control.invalid,
58
- readonly: props.readonly
59
- }));
60
- function onInput(e) {
61
- emit("update:modelValue", e.target.value);
62
- }
63
- function focusInput(e) {
64
- if (control.disabled) return;
65
- const target = e.target;
66
- if (target instanceof Element && isInteractiveElement(target)) return;
67
- e.currentTarget.querySelector(".rp-input__native")?.focus();
68
- }
69
- function isInteractiveElement(target) {
70
- return Boolean(target.closest([
71
- "button",
72
- "a[href]",
73
- "input:not(.rp-input__native)",
74
- "select",
75
- "textarea",
76
- "[contenteditable=\"true\"]",
77
- "[tabindex]:not([tabindex=\"-1\"])"
78
- ].join(",")));
79
- }
94
+ const { inputRef, control, rootClass, onInput, focusInput } = useInput(props, (value) => {
95
+ emit("update:modelValue", value);
96
+ });
97
+ const _setTemplateRef = createTemplateRefSetter();
80
98
  const n9 = t2();
81
99
  const n4 = child(n9, 1);
82
- renderEffect(() => setClass(n9, rootClass.value));
100
+ renderEffect(() => setClass(n9, unref(rootClass)));
83
101
  setInsertionState(n9, 0, 0);
84
102
  createIf(() => $slots.left, () => {
85
103
  const n3 = t0();
@@ -87,7 +105,8 @@ var input_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
87
105
  createSlot("left", null, null, 1);
88
106
  return n3;
89
107
  });
90
- n4.$evtinput = createInvoker(onInput);
108
+ n4.$evtinput = createInvoker((e) => unref(onInput)(e));
109
+ _setTemplateRef(n4, inputRef, null, "inputRef");
91
110
  renderEffect(() => {
92
111
  const _control = unref(control);
93
112
  const _control_required = _control.required;
@@ -112,11 +131,9 @@ var input_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
112
131
  createSlot("right", null, null, 1);
113
132
  return n8;
114
133
  });
115
- n9.$evtmousedown = createInvoker(focusInput);
134
+ n9.$evtmousedown = createInvoker((e) => unref(focusInput)(e));
116
135
  return n9;
117
136
  }
118
- }), [["__scopeId", "data-v-fedf15e7"]]);
137
+ }), [["__scopeId", "data-v-e5ad32a7"]]);
119
138
  //#endregion
120
139
  export { input_default as t };
121
-
122
- //# sourceMappingURL=input.js.map