ropav 0.0.10 → 0.0.11

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 (227) hide show
  1. package/README.md +6 -0
  2. package/dist/accordion.css +115 -111
  3. package/dist/accordion.js +60 -16
  4. package/dist/alert.css +110 -108
  5. package/dist/alert.js +48 -26
  6. package/dist/aspect-ratio.css +17 -15
  7. package/dist/aspect-ratio.js +20 -6
  8. package/dist/avatar.css +98 -96
  9. package/dist/avatar.js +27 -16
  10. package/dist/badge.css +95 -93
  11. package/dist/badge.js +29 -16
  12. package/dist/base.css +672 -671
  13. package/dist/button-group.css +39 -37
  14. package/dist/button-group.js +23 -12
  15. package/dist/button-link.css +160 -158
  16. package/dist/button-link.js +43 -24
  17. package/dist/button.css +160 -158
  18. package/dist/button.js +37 -19
  19. package/dist/card.css +109 -107
  20. package/dist/card.js +42 -17
  21. package/dist/checkbox.css +139 -137
  22. package/dist/checkbox.js +79 -28
  23. package/dist/collapse.css +29 -27
  24. package/dist/collapse.js +44 -10
  25. package/dist/color-input.css +137 -107
  26. package/dist/color-input.js +86 -17
  27. package/dist/color-picker.css +309 -303
  28. package/dist/color-picker.js +147 -54
  29. package/dist/color-picker2.js +9 -1
  30. package/dist/color-swatch.css +48 -46
  31. package/dist/color-swatch.js +15 -11
  32. package/dist/color-swatch2.js +4 -0
  33. package/dist/components/accordion/accordion-item.d.ts +13 -1
  34. package/dist/components/accordion/index.d.ts +2 -1
  35. package/dist/components/accordion/index.js +2 -2
  36. package/dist/components/accordion/types.d.ts +9 -4
  37. package/dist/components/alert/alert.d.ts +2 -2
  38. package/dist/components/alert/index.d.ts +2 -2
  39. package/dist/components/alert/index.js +2 -2
  40. package/dist/components/alert/types.d.ts +4 -1
  41. package/dist/components/aspect-ratio/index.d.ts +2 -1
  42. package/dist/components/aspect-ratio/index.js +2 -2
  43. package/dist/components/aspect-ratio/types.d.ts +4 -1
  44. package/dist/components/avatar/index.d.ts +2 -2
  45. package/dist/components/avatar/index.js +2 -2
  46. package/dist/components/avatar/types.d.ts +4 -1
  47. package/dist/components/badge/index.d.ts +2 -2
  48. package/dist/components/badge/index.js +2 -2
  49. package/dist/components/badge/types.d.ts +4 -1
  50. package/dist/components/button/index.d.ts +2 -1
  51. package/dist/components/button/index.js +2 -2
  52. package/dist/components/button/types.d.ts +4 -1
  53. package/dist/components/button-group/index.d.ts +2 -1
  54. package/dist/components/button-group/index.js +2 -2
  55. package/dist/components/button-group/types.d.ts +4 -1
  56. package/dist/components/button-link/index.d.ts +2 -1
  57. package/dist/components/button-link/index.js +2 -2
  58. package/dist/components/button-link/types.d.ts +4 -1
  59. package/dist/components/card/index.d.ts +2 -1
  60. package/dist/components/card/index.js +2 -2
  61. package/dist/components/card/types.d.ts +5 -1
  62. package/dist/components/checkbox/checkbox.d.ts +4 -1
  63. package/dist/components/checkbox/index.d.ts +2 -1
  64. package/dist/components/checkbox/index.js +2 -2
  65. package/dist/components/checkbox/types.d.ts +6 -1
  66. package/dist/components/checkbox/useCheckbox.d.ts +2 -0
  67. package/dist/components/collapse/collapse.d.ts +2 -2
  68. package/dist/components/collapse/index.d.ts +2 -1
  69. package/dist/components/collapse/index.js +2 -2
  70. package/dist/components/collapse/types.d.ts +9 -2
  71. package/dist/components/color-input/index.d.ts +2 -1
  72. package/dist/components/color-input/index.js +2 -2
  73. package/dist/components/color-input/types.d.ts +4 -1
  74. package/dist/components/color-picker/index.d.ts +2 -2
  75. package/dist/components/color-picker/index.js +2 -2
  76. package/dist/components/color-picker/types.d.ts +13 -1
  77. package/dist/components/color-swatch/index.d.ts +2 -1
  78. package/dist/components/color-swatch/index.js +2 -1
  79. package/dist/components/color-swatch/types.d.ts +4 -1
  80. package/dist/components/dropdown-menu/dropdown-menu-primitives.d.ts +724 -0
  81. package/dist/components/dropdown-menu/dropdown-menu.d.ts +3 -3
  82. package/dist/components/dropdown-menu/index.d.ts +53 -1
  83. package/dist/components/dropdown-menu/index.js +2 -2
  84. package/dist/components/dropdown-menu/types.d.ts +142 -6
  85. package/dist/components/dropdown-menu/useDropdownMenu.d.ts +11 -3
  86. package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +5 -3
  87. package/dist/components/dropdown-menu/useDropdownMenuDom.d.ts +2 -1
  88. package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +4 -4
  89. package/dist/components/dropdown-menu/useDropdownMenuPortalPosition.d.ts +19 -0
  90. package/dist/components/dropdown-menu/useDropdownMenuRenderItems.d.ts +14 -2
  91. package/dist/components/field/index.d.ts +2 -1
  92. package/dist/components/field/index.js +2 -2
  93. package/dist/components/field/types.d.ts +4 -1
  94. package/dist/components/floating/index.d.ts +1 -0
  95. package/dist/components/floating/index.js +0 -0
  96. package/dist/components/floating/types.d.ts +31 -0
  97. package/dist/components/floating/useFloatingPosition.d.ts +38 -0
  98. package/dist/components/focus-trap/focus-trap.d.ts +31 -0
  99. package/dist/components/focus-trap/index.d.ts +4 -0
  100. package/dist/components/focus-trap/index.js +3 -0
  101. package/dist/components/focus-trap/types.d.ts +41 -0
  102. package/dist/components/focus-trap/useFocusTrap.d.ts +2 -0
  103. package/dist/components/icon-button/index.d.ts +2 -1
  104. package/dist/components/icon-button/index.js +2 -1
  105. package/dist/components/icon-button/types.d.ts +4 -1
  106. package/dist/components/input/index.d.ts +2 -1
  107. package/dist/components/input/index.js +2 -1
  108. package/dist/components/input/types.d.ts +4 -1
  109. package/dist/components/modal/index.d.ts +2 -1
  110. package/dist/components/modal/index.js +2 -2
  111. package/dist/components/modal/types.d.ts +8 -1
  112. package/dist/components/number-input/index.d.ts +2 -1
  113. package/dist/components/number-input/index.js +2 -2
  114. package/dist/components/number-input/types.d.ts +4 -1
  115. package/dist/components/overlay/index.d.ts +2 -1
  116. package/dist/components/overlay/index.js +2 -1
  117. package/dist/components/overlay/types.d.ts +4 -1
  118. package/dist/components/popover/index.d.ts +2 -2
  119. package/dist/components/popover/index.js +2 -2
  120. package/dist/components/popover/popover.d.ts +2 -2
  121. package/dist/components/popover/types.d.ts +20 -11
  122. package/dist/components/popover/usePopover.d.ts +9 -1
  123. package/dist/components/progress/index.d.ts +2 -2
  124. package/dist/components/progress/index.js +2 -2
  125. package/dist/components/progress/types.d.ts +4 -1
  126. package/dist/components/radio/index.d.ts +2 -1
  127. package/dist/components/radio/index.js +2 -2
  128. package/dist/components/radio/radio.d.ts +8 -3
  129. package/dist/components/radio/types.d.ts +20 -3
  130. package/dist/components/radio/useRadio.d.ts +9 -4
  131. package/dist/components/select/index.d.ts +2 -1
  132. package/dist/components/select/index.js +2 -2
  133. package/dist/components/select/types.d.ts +4 -1
  134. package/dist/components/select/useSelect.d.ts +2 -1
  135. package/dist/components/slider/index.d.ts +2 -2
  136. package/dist/components/slider/index.js +2 -2
  137. package/dist/components/slider/range-slider-tooltip.d.ts +3 -0
  138. package/dist/components/slider/range-slider.d.ts +4 -1
  139. package/dist/components/slider/slider.d.ts +4 -1
  140. package/dist/components/slider/sliderCore.d.ts +4 -4
  141. package/dist/components/slider/types.d.ts +12 -2
  142. package/dist/components/slider/useRangeSlider.d.ts +1 -1
  143. package/dist/components/slider/useSlider.d.ts +1 -1
  144. package/dist/components/switch/index.d.ts +2 -1
  145. package/dist/components/switch/index.js +2 -2
  146. package/dist/components/switch/switch.d.ts +4 -1
  147. package/dist/components/switch/types.d.ts +6 -1
  148. package/dist/components/switch/useSwitch.d.ts +2 -0
  149. package/dist/components/tabs/index.d.ts +2 -1
  150. package/dist/components/tabs/index.js +2 -2
  151. package/dist/components/tabs/types.d.ts +13 -4
  152. package/dist/components/teleport-provider/index.d.ts +2 -0
  153. package/dist/components/teleport-provider/index.js +2 -0
  154. package/dist/components/teleport-provider/teleport-provider.d.ts +21 -0
  155. package/dist/components/teleport-provider/types.d.ts +4 -0
  156. package/dist/components/teleport-provider/useTeleportTarget.d.ts +5 -0
  157. package/dist/components/textarea/index.d.ts +2 -1
  158. package/dist/components/textarea/index.js +2 -2
  159. package/dist/components/textarea/textarea.d.ts +4 -1
  160. package/dist/components/textarea/types.d.ts +6 -1
  161. package/dist/components/textarea/useTextarea.d.ts +1 -0
  162. package/dist/components/toast/index.d.ts +2 -2
  163. package/dist/components/toast/index.js +2 -2
  164. package/dist/components/toast/toast.d.ts +2 -2
  165. package/dist/components/toast/types.d.ts +10 -6
  166. package/dist/components/tooltip/index.d.ts +2 -1
  167. package/dist/components/tooltip/index.js +2 -1
  168. package/dist/components/tooltip/tooltip.d.ts +2 -2
  169. package/dist/components/tooltip/types.d.ts +13 -12
  170. package/dist/components/tooltip/useTooltip.d.ts +13 -3
  171. package/dist/dropdown-menu.css +191 -107
  172. package/dist/dropdown-menu.js +1582 -81
  173. package/dist/field.css +41 -39
  174. package/dist/field.js +40 -16
  175. package/dist/focus-trap.js +80 -0
  176. package/dist/icon-button.css +193 -189
  177. package/dist/icon-button.js +23 -18
  178. package/dist/icon-button2.js +8 -0
  179. package/dist/index.d.ts +4 -0
  180. package/dist/index.js +36 -32
  181. package/dist/input.css +122 -120
  182. package/dist/input.js +47 -34
  183. package/dist/input2.js +9 -0
  184. package/dist/legacy-unlayered.css +5461 -0
  185. package/dist/modal.css +129 -127
  186. package/dist/modal.js +160 -200
  187. package/dist/number-input.css +87 -85
  188. package/dist/number-input.js +61 -17
  189. package/dist/overlay.css +26 -24
  190. package/dist/overlay.js +17 -9
  191. package/dist/overlay2.js +4 -0
  192. package/dist/popover.css +140 -107
  193. package/dist/popover.js +288 -193
  194. package/dist/popover2.js +6 -1
  195. package/dist/progress.css +101 -99
  196. package/dist/progress.js +50 -28
  197. package/dist/radio.css +114 -105
  198. package/dist/radio.js +154 -56
  199. package/dist/select.css +244 -242
  200. package/dist/select.js +92 -47
  201. package/dist/slider.css +1109 -1031
  202. package/dist/slider.js +330 -163
  203. package/dist/styles-api.d.ts +22 -0
  204. package/dist/styles-api.js +49 -0
  205. package/dist/switch.css +120 -108
  206. package/dist/switch.js +89 -33
  207. package/dist/tabs.css +286 -278
  208. package/dist/tabs.js +60 -21
  209. package/dist/teleport-provider.js +15 -0
  210. package/dist/textarea.css +132 -130
  211. package/dist/textarea.js +69 -27
  212. package/dist/toast.css +229 -225
  213. package/dist/toast.js +102 -42
  214. package/dist/tooltip.css +137 -107
  215. package/dist/tooltip.js +180 -228
  216. package/dist/tooltip2.js +8 -0
  217. package/dist/useClickOutside.js +1 -1
  218. package/dist/useFloatingPosition.js +1284 -0
  219. package/dist/useFocusTrap.js +130 -0
  220. package/dist/useTeleportTarget.js +29 -0
  221. package/docs/public-styles-api.md +133 -0
  222. package/docs/public-tokens.md +545 -0
  223. package/package.json +29 -5
  224. package/src/styles/_tokens.scss +33 -28
  225. package/src/styles/_utilities.scss +11 -9
  226. package/src/styles/styles-manifest.json +4125 -0
  227. package/dist/rafScheduler.js +0 -34
package/dist/tabs.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import './tabs.css';
2
2
  import { t as bem } from "./bem.js";
3
+ import { n as useStylesApi, t as presence } from "./styles-api.js";
3
4
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
4
5
  import { t as useRequiredInject } from "./useRequiredInject.js";
5
6
  import { computed, createIf, createSlot, defineVaporComponent, onBeforeUnmount, onMounted, provide, ref, renderEffect, setDynamicProps, setInsertionState, shallowRef, template, unref, useId, watch } from "vue";
@@ -388,11 +389,12 @@ function useTabsContent(props) {
388
389
  }
389
390
  //#endregion
390
391
  //#region src/components/tabs/tabs.vue?vue&type=script&setup=true&vapor=true&lang.ts
391
- var t0$3 = template("<div data-v-32e41419>", 1);
392
+ var t0$3 = template("<div data-v-163486d1>", 1);
392
393
  //#endregion
393
394
  //#region src/components/tabs/tabs.vue
394
395
  var tabs_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
395
396
  name: "RpTabs",
397
+ inheritAttrs: false,
396
398
  __name: "tabs",
397
399
  props: {
398
400
  id: {},
@@ -414,29 +416,37 @@ var tabs_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
414
416
  },
415
417
  ariaLabel: {},
416
418
  describedby: {},
417
- labelledby: {}
419
+ labelledby: {},
420
+ classNames: {},
421
+ styles: {}
418
422
  },
419
423
  emits: ["update:modelValue"],
420
424
  setup(__props, { emit: __emit }) {
421
425
  const props = __props;
422
426
  const emit = __emit;
423
- const { rootProps, slotProps } = useTabs(props, (value) => {
427
+ const { rootProps: internalRootProps, slotProps } = useTabs(props, (value) => {
424
428
  emit("update:modelValue", value);
425
429
  });
430
+ const { getRootAttrs } = useStylesApi(props, "root");
431
+ const rootAttrs = computed(() => getRootAttrs({
432
+ ...internalRootProps.value,
433
+ "data-disabled": presence(props.disabled)
434
+ }));
426
435
  const n1 = t0$3();
427
- renderEffect(() => setDynamicProps(n1, [unref(rootProps)]));
436
+ renderEffect(() => setDynamicProps(n1, [rootAttrs.value]));
428
437
  setInsertionState(n1, null, 0);
429
438
  createSlot("default", { $: [() => unref(slotProps)] }, null, 1);
430
439
  return n1;
431
440
  }
432
- }), [["__scopeId", "data-v-32e41419"]]);
441
+ }), [["__scopeId", "data-v-163486d1"]]);
433
442
  //#endregion
434
443
  //#region src/components/tabs/tabs-content.vue?vue&type=script&setup=true&vapor=true&lang.ts
435
- var t0$2 = template("<section data-v-3ff419c3>", 1);
444
+ var t0$2 = template("<section data-v-7206185c>", 1);
436
445
  //#endregion
437
446
  //#region src/components/tabs/tabs-content.vue
438
447
  var tabs_content_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
439
448
  name: "RpTabsContent",
449
+ inheritAttrs: false,
440
450
  __name: "tabs-content",
441
451
  props: {
442
452
  id: {},
@@ -447,49 +457,64 @@ var tabs_content_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
447
457
  },
448
458
  ariaLabel: {},
449
459
  ariaDescribedby: {},
450
- ariaLabelledby: {}
460
+ ariaLabelledby: {},
461
+ classNames: {},
462
+ styles: {}
451
463
  },
452
464
  setup(__props) {
453
- const { rootProps, slotProps, shouldRenderContent } = useTabsContent(__props);
465
+ const props = __props;
466
+ const { rootProps: internalRootProps, slotProps, shouldRenderContent } = useTabsContent(props);
467
+ const { getRootAttrs } = useStylesApi(props, "root");
468
+ const rootAttrs = computed(() => getRootAttrs(internalRootProps.value));
454
469
  return createIf(() => unref(shouldRenderContent), () => {
455
470
  const n3 = t0$2();
456
- renderEffect(() => setDynamicProps(n3, [unref(rootProps)]));
471
+ renderEffect(() => setDynamicProps(n3, [rootAttrs.value]));
457
472
  setInsertionState(n3, null, 0);
458
473
  createSlot("default", { $: [() => unref(slotProps)] }, null, 1);
459
474
  return n3;
460
475
  });
461
476
  }
462
- }), [["__scopeId", "data-v-3ff419c3"]]);
477
+ }), [["__scopeId", "data-v-7206185c"]]);
463
478
  //#endregion
464
479
  //#region src/components/tabs/tabs-list.vue?vue&type=script&setup=true&vapor=true&lang.ts
465
- var t0$1 = template("<div data-v-7f168d05>", 1);
480
+ var t0$1 = template("<div data-v-5016edc1>", 1);
466
481
  //#endregion
467
482
  //#region src/components/tabs/tabs-list.vue
468
483
  var tabs_list_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
469
484
  name: "RpTabsList",
485
+ inheritAttrs: false,
470
486
  __name: "tabs-list",
471
487
  props: {
472
488
  id: {},
473
489
  ariaLabel: {},
474
490
  ariaDescribedby: {},
475
- ariaLabelledby: {}
491
+ ariaLabelledby: {},
492
+ classNames: {},
493
+ styles: {}
476
494
  },
477
495
  setup(__props) {
478
- const { rootProps, slotProps } = useTabsList(__props);
496
+ const props = __props;
497
+ const { rootProps: internalRootProps, slotProps } = useTabsList(props);
498
+ const { getRootAttrs } = useStylesApi(props, "root");
499
+ const rootAttrs = computed(() => getRootAttrs({
500
+ ...internalRootProps.value,
501
+ "data-disabled": presence(internalRootProps.value["data-disabled"])
502
+ }));
479
503
  const n1 = t0$1();
480
- renderEffect(() => setDynamicProps(n1, [unref(rootProps)]));
504
+ renderEffect(() => setDynamicProps(n1, [rootAttrs.value]));
481
505
  setInsertionState(n1, null, 0);
482
506
  createSlot("default", { $: [() => unref(slotProps)] }, null, 1);
483
507
  return n1;
484
508
  }
485
- }), [["__scopeId", "data-v-7f168d05"]]);
509
+ }), [["__scopeId", "data-v-5016edc1"]]);
486
510
  //#endregion
487
511
  //#region src/components/tabs/tabs-trigger.vue?vue&type=script&setup=true&vapor=true&lang.ts
488
- var t0 = template("<button data-v-4adec360>", 1);
512
+ var t0 = template("<button data-v-6df68725>", 1);
489
513
  //#endregion
490
514
  //#region src/components/tabs/tabs-trigger.vue
491
515
  var tabs_trigger_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
492
516
  name: "RpTabsTrigger",
517
+ inheritAttrs: false,
493
518
  __name: "tabs-trigger",
494
519
  props: {
495
520
  id: {},
@@ -498,16 +523,30 @@ var tabs_trigger_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
498
523
  type: Boolean,
499
524
  default: false
500
525
  },
501
- align: {}
526
+ align: {},
527
+ classNames: {},
528
+ styles: {}
502
529
  },
503
530
  setup(__props) {
504
- const { rootProps, slotProps } = useTabsTrigger(__props);
531
+ const props = __props;
532
+ const { rootProps: internalRootProps, slotProps } = useTabsTrigger(props);
533
+ const { getRootAttrs } = useStylesApi(props, "root");
534
+ const rootAttrs = computed(() => getRootAttrs({
535
+ ...internalRootProps.value,
536
+ "data-disabled": presence(internalRootProps.value["data-disabled"])
537
+ }));
505
538
  const n1 = t0();
506
- renderEffect(() => setDynamicProps(n1, [unref(rootProps)]));
539
+ renderEffect(() => setDynamicProps(n1, [rootAttrs.value]));
507
540
  setInsertionState(n1, null, 0);
508
541
  createSlot("default", { $: [() => unref(slotProps)] }, null, 1);
509
542
  return n1;
510
543
  }
511
- }), [["__scopeId", "data-v-4adec360"]]);
544
+ }), [["__scopeId", "data-v-6df68725"]]);
545
+ //#endregion
546
+ //#region src/components/tabs/types.ts
547
+ var tabsParts = ["root"];
548
+ var tabsListParts = ["root"];
549
+ var tabsTriggerParts = ["root"];
550
+ var tabsContentParts = ["root"];
512
551
  //#endregion
513
- export { useTabs as a, useTabsTrigger as c, tabs_default as i, tabs_list_default as n, useTabsContent as o, tabs_content_default as r, useTabsList as s, tabs_trigger_default as t };
552
+ export { tabs_trigger_default as a, tabs_default as c, useTabsList as d, useTabsTrigger as f, tabsTriggerParts as i, useTabs as l, tabsListParts as n, tabs_list_default as o, tabsParts as r, tabs_content_default as s, tabsContentParts as t, useTabsContent as u };
@@ -0,0 +1,15 @@
1
+ import { t as provideTeleportTarget } from "./useTeleportTarget.js";
2
+ import { createSlot, defineVaporComponent } from "vue";
3
+ //#endregion
4
+ //#region src/components/teleport-provider/teleport-provider.vue
5
+ var teleport_provider_default = /* @__PURE__ */ defineVaporComponent({
6
+ name: "RpTeleportProvider",
7
+ __name: "teleport-provider",
8
+ props: { teleportTo: {} },
9
+ setup(__props) {
10
+ provideTeleportTarget(__props);
11
+ return createSlot();
12
+ }
13
+ });
14
+ //#endregion
15
+ export { teleport_provider_default as t };
package/dist/textarea.css CHANGED
@@ -1,131 +1,133 @@
1
- .rp-textarea[data-v-6c62dc31] {
2
- --_rp-textarea-padding-y: 7px;
3
- --_rp-textarea-padding-x: calc(var(--rp-size-control-md) / 3);
4
- --_rp-textarea-font-size: var(--rp-font-size-md);
5
- --_rp-textarea-radius: var(--rp-radius-sm);
6
- --_rp-textarea-valid-border: var(--rp-color-green-outline);
7
- --_rp-textarea-valid-ring: color-mix(in srgb, var(--rp-color-green-filled) 32%, transparent);
8
- --_rp-textarea-invalid-border: var(--rp-color-red-filled);
9
- --_rp-textarea-invalid-ring: color-mix(in srgb, var(--rp-color-red-filled) 32%, transparent);
10
- display: inline-flex;
11
- box-sizing: border-box;
12
- font-family: var(--rp-font-family);
13
- font-weight: var(--rp-font-weight-normal);
14
- background-color: var(--rp-color-control-bg);
15
- border: var(--rp-border-width-thin) solid var(--rp-color-control-border);
16
- cursor: text;
17
- transition: border-color var(--rp-transition-fast), box-shadow var(--rp-transition-fast);
18
- }
19
- .rp-textarea[data-v-6c62dc31]:hover:not(.rp-textarea--disabled):not(.rp-textarea--invalid):not(.rp-textarea--valid) {
20
- border-color: var(--rp-color-control-border-hover);
21
- }
22
- .rp-textarea[data-v-6c62dc31]:focus-within:not(.rp-textarea--disabled):not(.rp-textarea--invalid):not(.rp-textarea--valid) {
23
- border-color: var(--rp-color-control-border-focus);
24
- box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
25
- }
26
- .rp-textarea[data-v-6c62dc31] {
27
- font-size: var(--_rp-textarea-font-size);
28
- border-radius: var(--_rp-textarea-radius);
29
- }
30
- .rp-textarea--size-xs[data-v-6c62dc31] {
31
- --_rp-textarea-padding-y: 4.5px;
32
- --_rp-textarea-padding-x: calc(var(--rp-size-control-xs) / 3);
33
- --_rp-textarea-font-size: var(--rp-font-size-xs);
34
- }
35
- .rp-textarea--size-sm[data-v-6c62dc31] {
36
- --_rp-textarea-padding-y: 5.5px;
37
- --_rp-textarea-padding-x: calc(var(--rp-size-control-sm) / 3);
38
- --_rp-textarea-font-size: var(--rp-font-size-sm);
39
- }
40
- .rp-textarea--size-md[data-v-6c62dc31] {
41
- --_rp-textarea-padding-y: 7px;
42
- --_rp-textarea-padding-x: calc(var(--rp-size-control-md) / 3);
43
- --_rp-textarea-font-size: var(--rp-font-size-md);
44
- }
45
- .rp-textarea--size-lg[data-v-6c62dc31] {
46
- --_rp-textarea-padding-y: 9.5px;
47
- --_rp-textarea-padding-x: calc(var(--rp-size-control-lg) / 3);
48
- --_rp-textarea-font-size: var(--rp-font-size-lg);
49
- }
50
- .rp-textarea--size-xl[data-v-6c62dc31] {
51
- --_rp-textarea-padding-y: 13px;
52
- --_rp-textarea-padding-x: calc(var(--rp-size-control-xl) / 3);
53
- --_rp-textarea-font-size: var(--rp-font-size-xl);
54
- }
55
- .rp-textarea--radius-xs[data-v-6c62dc31] {
56
- --_rp-textarea-radius: var(--rp-radius-xs);
57
- }
58
- .rp-textarea--radius-sm[data-v-6c62dc31] {
59
- --_rp-textarea-radius: var(--rp-radius-sm);
60
- }
61
- .rp-textarea--radius-md[data-v-6c62dc31] {
62
- --_rp-textarea-radius: var(--rp-radius-md);
63
- }
64
- .rp-textarea--radius-lg[data-v-6c62dc31] {
65
- --_rp-textarea-radius: var(--rp-radius-lg);
66
- }
67
- .rp-textarea--radius-xl[data-v-6c62dc31] {
68
- --_rp-textarea-radius: var(--rp-radius-xl);
69
- }
70
- html.dark .rp-textarea[data-v-6c62dc31], [data-rp-color-scheme=dark] .rp-textarea[data-v-6c62dc31] {
71
- --_rp-textarea-valid-border: var(--rp-color-green-light-color);
72
- --_rp-textarea-valid-ring: color-mix(
73
- in srgb,
74
- var(--rp-color-green-light-color) 32%,
75
- transparent
76
- );
77
- --_rp-textarea-invalid-border: var(--rp-color-red-light-color);
78
- --_rp-textarea-invalid-ring: color-mix(
79
- in srgb,
80
- var(--rp-color-red-light-color) 32%,
81
- transparent
82
- );
83
- }
84
- .rp-textarea--disabled[data-v-6c62dc31] {
85
- opacity: var(--rp-opacity-disabled);
86
- cursor: not-allowed;
87
- }
88
- .rp-textarea--valid[data-v-6c62dc31] {
89
- border-color: var(--_rp-textarea-valid-border);
90
- }
91
- .rp-textarea--valid[data-v-6c62dc31]:focus-within:not(.rp-textarea--disabled) {
92
- border-color: var(--_rp-textarea-valid-border);
93
- box-shadow: 0 0 0 var(--rp-border-width-medium) var(--_rp-textarea-valid-ring);
94
- }
95
- .rp-textarea--invalid[data-v-6c62dc31] {
96
- border-color: var(--_rp-textarea-invalid-border);
97
- }
98
- .rp-textarea--invalid[data-v-6c62dc31]:focus-within:not(.rp-textarea--disabled) {
99
- border-color: var(--_rp-textarea-invalid-border);
100
- box-shadow: 0 0 0 var(--rp-border-width-medium) var(--_rp-textarea-invalid-ring);
101
- }
102
- .rp-textarea--readonly[data-v-6c62dc31] {
103
- background-color: var(--rp-color-control-readonly-bg);
104
- }
105
- .rp-textarea--resize-vertical .rp-textarea__native[data-v-6c62dc31] {
106
- resize: vertical;
107
- }
108
- .rp-textarea--resize-both .rp-textarea__native[data-v-6c62dc31] {
109
- resize: both;
110
- }
111
- .rp-textarea__native[data-v-6c62dc31] {
112
- box-sizing: border-box;
113
- flex: 1;
114
- width: 100%;
115
- min-width: 0;
116
- min-height: calc(1lh + var(--_rp-textarea-padding-y) + var(--_rp-textarea-padding-y));
117
- padding: var(--_rp-textarea-padding-y) var(--_rp-textarea-padding-x);
118
- border: none;
119
- outline: none;
120
- resize: none;
121
- background: transparent;
122
- font: inherit;
123
- color: var(--rp-color-control-fg);
124
- line-height: var(--rp-line-height-md);
125
- }
126
- .rp-textarea__native[data-v-6c62dc31]::placeholder {
127
- color: var(--rp-color-control-placeholder);
128
- }
129
- .rp-textarea__native[data-v-6c62dc31]:disabled {
130
- cursor: not-allowed;
1
+ @layer ropav.components {
2
+ .rp-textarea[data-v-1654f805] {
3
+ --_rp-textarea-padding-y: 7px;
4
+ --_rp-textarea-padding-x: calc(var(--rp-size-control-md) / 3);
5
+ --_rp-textarea-font-size: var(--rp-font-size-md);
6
+ --_rp-textarea-radius: var(--rp-radius-sm);
7
+ --_rp-textarea-valid-border: var(--rp-color-green-outline);
8
+ --_rp-textarea-valid-ring: color-mix(in srgb, var(--rp-color-green-filled) 32%, transparent);
9
+ --_rp-textarea-invalid-border: var(--rp-color-red-filled);
10
+ --_rp-textarea-invalid-ring: color-mix(in srgb, var(--rp-color-red-filled) 32%, transparent);
11
+ display: inline-flex;
12
+ box-sizing: border-box;
13
+ font-family: var(--rp-font-family);
14
+ font-weight: var(--rp-font-weight-normal);
15
+ background-color: var(--rp-color-control-bg);
16
+ border: var(--rp-border-width-thin) solid var(--rp-color-control-border);
17
+ cursor: text;
18
+ transition: border-color var(--rp-transition-fast), box-shadow var(--rp-transition-fast);
19
+ }
20
+ .rp-textarea[data-v-1654f805]:hover:not(.rp-textarea--disabled):not(.rp-textarea--invalid):not(.rp-textarea--valid) {
21
+ border-color: var(--rp-color-control-border-hover);
22
+ }
23
+ .rp-textarea[data-v-1654f805]:focus-within:not(.rp-textarea--disabled):not(.rp-textarea--invalid):not(.rp-textarea--valid) {
24
+ border-color: var(--rp-color-control-border-focus);
25
+ box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
26
+ }
27
+ .rp-textarea[data-v-1654f805] {
28
+ font-size: var(--_rp-textarea-font-size);
29
+ border-radius: var(--_rp-textarea-radius);
30
+ }
31
+ .rp-textarea--size-xs[data-v-1654f805] {
32
+ --_rp-textarea-padding-y: 4.5px;
33
+ --_rp-textarea-padding-x: calc(var(--rp-size-control-xs) / 3);
34
+ --_rp-textarea-font-size: var(--rp-font-size-xs);
35
+ }
36
+ .rp-textarea--size-sm[data-v-1654f805] {
37
+ --_rp-textarea-padding-y: 5.5px;
38
+ --_rp-textarea-padding-x: calc(var(--rp-size-control-sm) / 3);
39
+ --_rp-textarea-font-size: var(--rp-font-size-sm);
40
+ }
41
+ .rp-textarea--size-md[data-v-1654f805] {
42
+ --_rp-textarea-padding-y: 7px;
43
+ --_rp-textarea-padding-x: calc(var(--rp-size-control-md) / 3);
44
+ --_rp-textarea-font-size: var(--rp-font-size-md);
45
+ }
46
+ .rp-textarea--size-lg[data-v-1654f805] {
47
+ --_rp-textarea-padding-y: 9.5px;
48
+ --_rp-textarea-padding-x: calc(var(--rp-size-control-lg) / 3);
49
+ --_rp-textarea-font-size: var(--rp-font-size-lg);
50
+ }
51
+ .rp-textarea--size-xl[data-v-1654f805] {
52
+ --_rp-textarea-padding-y: 13px;
53
+ --_rp-textarea-padding-x: calc(var(--rp-size-control-xl) / 3);
54
+ --_rp-textarea-font-size: var(--rp-font-size-xl);
55
+ }
56
+ .rp-textarea--radius-xs[data-v-1654f805] {
57
+ --_rp-textarea-radius: var(--rp-radius-xs);
58
+ }
59
+ .rp-textarea--radius-sm[data-v-1654f805] {
60
+ --_rp-textarea-radius: var(--rp-radius-sm);
61
+ }
62
+ .rp-textarea--radius-md[data-v-1654f805] {
63
+ --_rp-textarea-radius: var(--rp-radius-md);
64
+ }
65
+ .rp-textarea--radius-lg[data-v-1654f805] {
66
+ --_rp-textarea-radius: var(--rp-radius-lg);
67
+ }
68
+ .rp-textarea--radius-xl[data-v-1654f805] {
69
+ --_rp-textarea-radius: var(--rp-radius-xl);
70
+ }
71
+ html.dark .rp-textarea[data-v-1654f805], [data-rp-color-scheme=dark] .rp-textarea[data-v-1654f805] {
72
+ --_rp-textarea-valid-border: var(--rp-color-green-light-color);
73
+ --_rp-textarea-valid-ring: color-mix(
74
+ in srgb,
75
+ var(--rp-color-green-light-color) 32%,
76
+ transparent
77
+ );
78
+ --_rp-textarea-invalid-border: var(--rp-color-red-light-color);
79
+ --_rp-textarea-invalid-ring: color-mix(
80
+ in srgb,
81
+ var(--rp-color-red-light-color) 32%,
82
+ transparent
83
+ );
84
+ }
85
+ .rp-textarea--disabled[data-v-1654f805] {
86
+ opacity: var(--rp-opacity-disabled);
87
+ cursor: not-allowed;
88
+ }
89
+ .rp-textarea--valid[data-v-1654f805] {
90
+ border-color: var(--_rp-textarea-valid-border);
91
+ }
92
+ .rp-textarea--valid[data-v-1654f805]:focus-within:not(.rp-textarea--disabled) {
93
+ border-color: var(--_rp-textarea-valid-border);
94
+ box-shadow: 0 0 0 var(--rp-border-width-medium) var(--_rp-textarea-valid-ring);
95
+ }
96
+ .rp-textarea--invalid[data-v-1654f805] {
97
+ border-color: var(--_rp-textarea-invalid-border);
98
+ }
99
+ .rp-textarea--invalid[data-v-1654f805]:focus-within:not(.rp-textarea--disabled) {
100
+ border-color: var(--_rp-textarea-invalid-border);
101
+ box-shadow: 0 0 0 var(--rp-border-width-medium) var(--_rp-textarea-invalid-ring);
102
+ }
103
+ .rp-textarea--readonly[data-v-1654f805] {
104
+ background-color: var(--rp-color-control-readonly-bg);
105
+ }
106
+ .rp-textarea--resize-vertical .rp-textarea__native[data-v-1654f805] {
107
+ resize: vertical;
108
+ }
109
+ .rp-textarea--resize-both .rp-textarea__native[data-v-1654f805] {
110
+ resize: both;
111
+ }
112
+ .rp-textarea__native[data-v-1654f805] {
113
+ box-sizing: border-box;
114
+ flex: 1;
115
+ width: 100%;
116
+ min-width: 0;
117
+ min-height: calc(1lh + var(--_rp-textarea-padding-y) + var(--_rp-textarea-padding-y));
118
+ padding: var(--_rp-textarea-padding-y) var(--_rp-textarea-padding-x);
119
+ border: none;
120
+ outline: none;
121
+ resize: none;
122
+ background: transparent;
123
+ font: inherit;
124
+ color: var(--rp-color-control-fg);
125
+ line-height: var(--rp-line-height-md);
126
+ }
127
+ .rp-textarea__native[data-v-1654f805]::placeholder {
128
+ color: var(--rp-color-control-placeholder);
129
+ }
130
+ .rp-textarea__native[data-v-1654f805]:disabled {
131
+ cursor: not-allowed;
132
+ }
131
133
  }
package/dist/textarea.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import './textarea.css';
2
2
  import { t as bem } from "./bem.js";
3
+ import { n as useStylesApi, t as presence } from "./styles-api.js";
3
4
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
4
5
  import { t as useControlState } from "./useControlState.js";
5
- import { child, computed, createInvoker, createTemplateRefSetter, defineVaporComponent, delegateEvents, nextTick, onMounted, ref, renderEffect, setAttr, setClass, setProp, setValue, template, unref, watch } from "vue";
6
+ import { child, computed, defineVaporComponent, nextTick, onMounted, ref, renderEffect, setDynamicProps, setStaticTemplateRef, template, unref, watch } from "vue";
6
7
  //#region src/components/textarea/useTextarea.ts
7
8
  var MIN_ROWS = 1;
8
9
  var INTERACTIVE_SELECTOR = [
@@ -118,6 +119,9 @@ function useTextarea(props, emitUpdate) {
118
119
  if (target instanceof Element && isInteractiveElement(target)) return;
119
120
  textareaRef.value?.focus();
120
121
  }
122
+ function focus(options) {
123
+ textareaRef.value?.focus(options);
124
+ }
121
125
  onMounted(scheduleTextareaHeightSync);
122
126
  watch(autosizeWatchSource, scheduleTextareaHeightSync);
123
127
  return {
@@ -126,17 +130,18 @@ function useTextarea(props, emitUpdate) {
126
130
  rootClass,
127
131
  nativeRows,
128
132
  onInput,
129
- focusTextarea
133
+ focusTextarea,
134
+ focus
130
135
  };
131
136
  }
132
137
  //#endregion
133
138
  //#region src/components/textarea/textarea.vue?vue&type=script&setup=true&vapor=true&lang.ts
134
- var t0 = template("<div data-v-6c62dc31><textarea data-v-6c62dc31 class=rp-textarea__native>", 1);
135
- delegateEvents("input", "mousedown");
139
+ var t0 = template("<div data-v-1654f805><textarea data-v-1654f805>", 1);
136
140
  //#endregion
137
141
  //#region src/components/textarea/textarea.vue
138
142
  var textarea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
139
143
  name: "RpTextarea",
144
+ inheritAttrs: false,
140
145
  __name: "textarea",
141
146
  props: {
142
147
  id: {},
@@ -175,41 +180,78 @@ var textarea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
175
180
  },
176
181
  ariaLabel: {},
177
182
  describedby: {},
178
- labelledby: {}
183
+ labelledby: {},
184
+ inputAttrs: {},
185
+ classNames: {},
186
+ styles: {}
179
187
  },
180
188
  emits: ["update:modelValue"],
181
- setup(__props, { emit: __emit }) {
189
+ setup(__props, { expose: __expose, emit: __emit }) {
182
190
  const props = __props;
183
191
  const emit = __emit;
184
- const { textareaRef, control, rootClass, nativeRows, onInput, focusTextarea } = useTextarea(props, (value) => {
192
+ const { textareaRef, control, rootClass, nativeRows, onInput, focusTextarea, focus } = useTextarea(props, (value) => {
185
193
  emit("update:modelValue", value);
186
194
  });
187
- const _setTemplateRef = createTemplateRefSetter();
195
+ const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
196
+ const rootAttrs = computed(() => getRootAttrs({
197
+ class: rootClass.value,
198
+ onMousedown: focusTextarea,
199
+ "data-disabled": presence(control.disabled),
200
+ "data-readonly": presence(props.readonly),
201
+ "data-invalid": presence(control.invalid)
202
+ }));
203
+ const nativeInputAttrs = computed(() => {
204
+ const { class: compatibilityClass, style: compatibilityStyle, onInput: compatibilityOnInput, ...attrs } = props.inputAttrs ?? {};
205
+ return {
206
+ ...attrs,
207
+ ...getPartAttrs("input", {
208
+ class: "rp-textarea__native",
209
+ compatibilityClass,
210
+ compatibilityStyle
211
+ }),
212
+ onInput(event) {
213
+ onInput(event);
214
+ compatibilityOnInput?.(event);
215
+ }
216
+ };
217
+ });
218
+ __expose({
219
+ nativeElement: textareaRef,
220
+ focus
221
+ });
188
222
  const n1 = t0();
189
223
  const n0 = child(n1);
190
- n0.$evtinput = createInvoker((e) => unref(onInput)(e));
191
- _setTemplateRef(n0, textareaRef, null, "textareaRef");
192
- n1.$evtmousedown = createInvoker((e) => unref(focusTextarea)(e));
224
+ setStaticTemplateRef(n0, textareaRef, null, "textareaRef");
193
225
  renderEffect(() => {
194
226
  const _control = unref(control);
227
+ const _readonly = __props.readonly;
228
+ const _presence = unref(presence);
195
229
  const _control_required = _control.required;
196
- setClass(n1, unref(rootClass));
197
- setProp(n0, "id", _control.id);
198
- setProp(n0, "name", __props.name);
199
- setValue(n0, __props.modelValue);
200
- setProp(n0, "placeholder", __props.placeholder);
201
- setProp(n0, "rows", unref(nativeRows));
202
- setProp(n0, "disabled", _control.disabled || void 0);
203
- setProp(n0, "readonly", __props.readonly || void 0);
204
- setProp(n0, "required", _control_required || void 0);
205
- setAttr(n0, "aria-label", __props.ariaLabel || void 0);
206
- setAttr(n0, "aria-labelledby", _control.ariaLabelledby);
207
- setAttr(n0, "aria-describedby", _control.ariaDescribedby);
208
- setAttr(n0, "aria-invalid", _control.invalid || void 0);
209
- setAttr(n0, "aria-required", _control_required || void 0);
230
+ setDynamicProps(n1, [rootAttrs.value]);
231
+ setDynamicProps(n0, [nativeInputAttrs.value, {
232
+ id: _control.id,
233
+ name: __props.name,
234
+ value: __props.modelValue,
235
+ placeholder: __props.placeholder,
236
+ rows: unref(nativeRows),
237
+ disabled: _control.disabled || void 0,
238
+ readonly: _readonly || void 0,
239
+ required: _control_required || void 0,
240
+ "aria-label": __props.ariaLabel || void 0,
241
+ "aria-labelledby": _control.ariaLabelledby,
242
+ "aria-describedby": _control.ariaDescribedby,
243
+ "aria-invalid": _control.invalid || void 0,
244
+ "aria-required": _control_required || void 0,
245
+ "data-disabled": _presence(_control.disabled),
246
+ "data-readonly": _presence(_readonly),
247
+ "data-invalid": _presence(_control.invalid)
248
+ }]);
210
249
  });
211
250
  return n1;
212
251
  }
213
- }), [["__scopeId", "data-v-6c62dc31"]]);
252
+ }), [["__scopeId", "data-v-1654f805"]]);
253
+ //#endregion
254
+ //#region src/components/textarea/types.ts
255
+ var textareaParts = ["root", "input"];
214
256
  //#endregion
215
- export { textarea_default as t };
257
+ export { textarea_default as n, textareaParts as t };