ropav 0.1.7 → 0.1.9

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 (167) hide show
  1. package/README.md +5 -4
  2. package/dist/ancestry.js +136 -0
  3. package/dist/calendar.css +184 -0
  4. package/dist/calendar.js +739 -0
  5. package/dist/calendar2.js +37 -0
  6. package/dist/chevron-left.js +12 -0
  7. package/dist/color-picker.js +38 -88
  8. package/dist/combobox.css +251 -0
  9. package/dist/combobox.js +410 -0
  10. package/dist/components/calendar/calendar.d.ts +30 -0
  11. package/dist/components/calendar/calendarBehavior.d.ts +49 -0
  12. package/dist/components/calendar/index.d.ts +3 -0
  13. package/dist/components/calendar/index.js +3 -0
  14. package/dist/components/calendar/types.d.ts +56 -0
  15. package/dist/components/calendar/useCalendar.d.ts +24 -0
  16. package/dist/components/color-picker/useColorPickerDrag.d.ts +1 -1
  17. package/dist/components/color-picker/useColorPickerSaturation.d.ts +1 -1
  18. package/dist/components/color-picker/useColorPickerSlider.d.ts +1 -1
  19. package/dist/components/combobox/combobox.d.ts +29 -0
  20. package/dist/components/combobox/comboboxModel.d.ts +4 -0
  21. package/dist/components/combobox/index.d.ts +3 -0
  22. package/dist/components/combobox/index.js +2 -0
  23. package/dist/components/combobox/types.d.ts +43 -0
  24. package/dist/components/combobox/useCombobox.d.ts +45 -0
  25. package/dist/components/date-picker/date-picker.d.ts +33 -0
  26. package/dist/components/date-picker/datePickerModel.d.ts +10 -0
  27. package/dist/components/date-picker/index.d.ts +4 -0
  28. package/dist/components/date-picker/index.js +2 -0
  29. package/dist/components/date-picker/types.d.ts +59 -0
  30. package/dist/components/date-picker/useDatePicker.d.ts +29 -0
  31. package/dist/components/date-picker/useDatePickerValueState.d.ts +21 -0
  32. package/dist/components/dropdown-menu/dropdown-menu-content.d.ts +2 -2
  33. package/dist/components/dropdown-menu/dropdown-menu-sub-content.d.ts +2 -2
  34. package/dist/components/dropdown-menu/dropdown-menu.d.ts +2 -2
  35. package/dist/components/dropdown-menu/dropdownMenuContext.d.ts +7 -18
  36. package/dist/components/dropdown-menu/dropdownMenuInteraction.d.ts +3 -3
  37. package/dist/components/dropdown-menu/dropdownMenuInteractionTypes.d.ts +58 -29
  38. package/dist/components/dropdown-menu/useDropdownMenuDataController.d.ts +4 -3
  39. package/dist/components/dropdown-menu/useDropdownMenuDataRegistration.d.ts +6 -4
  40. package/dist/components/dropdown-menu/useDropdownMenuPresentation.d.ts +3 -4
  41. package/dist/components/dropdown-menu/useDropdownMenuTargetBindings.d.ts +5 -5
  42. package/dist/components/dropzone/dropzone.d.ts +31 -0
  43. package/dist/components/dropzone/dropzoneModel.d.ts +16 -0
  44. package/dist/components/dropzone/index.d.ts +3 -0
  45. package/dist/components/dropzone/index.js +2 -0
  46. package/dist/components/dropzone/types.d.ts +56 -0
  47. package/dist/components/dropzone/useDropzone.d.ts +25 -0
  48. package/dist/components/file-input/file-input.d.ts +29 -0
  49. package/dist/components/file-input/index.d.ts +3 -0
  50. package/dist/components/file-input/index.js +2 -0
  51. package/dist/components/file-input/types.d.ts +37 -0
  52. package/dist/components/file-input/useFileInput.d.ts +15 -0
  53. package/dist/components/floating/index.js +1 -1
  54. package/dist/components/floating/useFloatingPosition.d.ts +1 -13
  55. package/dist/components/floating/useFloatingTargetLifecycle.d.ts +32 -0
  56. package/dist/components/floating/useHoverDisclosure.d.ts +10 -0
  57. package/dist/components/hover-card/hover-card.d.ts +25 -0
  58. package/dist/components/hover-card/index.d.ts +3 -0
  59. package/dist/components/hover-card/index.js +2 -0
  60. package/dist/components/hover-card/types.d.ts +45 -0
  61. package/dist/components/hover-card/useHoverCard.d.ts +22 -0
  62. package/dist/components/hover-card/useHoverCardDisclosure.d.ts +19 -0
  63. package/dist/components/multi-select/index.d.ts +3 -0
  64. package/dist/components/multi-select/index.js +2 -0
  65. package/dist/components/multi-select/multi-select.d.ts +30 -0
  66. package/dist/components/multi-select/multiSelectModel.d.ts +3 -0
  67. package/dist/components/multi-select/types.d.ts +49 -0
  68. package/dist/components/multi-select/useMultiSelect.d.ts +46 -0
  69. package/dist/components/number-input/useNumberInput.d.ts +1 -3
  70. package/dist/components/popover/usePopoverBindings.d.ts +3 -6
  71. package/dist/components/scroll-area/useScrollArea.d.ts +4 -4
  72. package/dist/components/scroll-area/useScrollAreaAttributes.d.ts +3 -3
  73. package/dist/components/scroll-area/useScrollAreaPointer.d.ts +1 -1
  74. package/dist/components/segmented-control/index.d.ts +3 -0
  75. package/dist/components/segmented-control/index.js +2 -0
  76. package/dist/components/segmented-control/segmented-control.d.ts +26 -0
  77. package/dist/components/segmented-control/types.d.ts +47 -0
  78. package/dist/components/segmented-control/useSegmentedControl.d.ts +15 -0
  79. package/dist/components/select/useSelect.d.ts +31 -19
  80. package/dist/components/slider/useRangeSlider.d.ts +1 -1
  81. package/dist/components/slider/useRangeSliderPointer.d.ts +1 -1
  82. package/dist/components/slider/useSlider.d.ts +1 -1
  83. package/dist/components/slider/useSliderPointer.d.ts +15 -0
  84. package/dist/components/slider/useSliderValueState.d.ts +1 -0
  85. package/dist/components/tags-input/index.d.ts +3 -0
  86. package/dist/components/tags-input/index.js +2 -0
  87. package/dist/components/tags-input/tags-input.d.ts +27 -0
  88. package/dist/components/tags-input/tagsInputModel.d.ts +12 -0
  89. package/dist/components/tags-input/types.d.ts +37 -0
  90. package/dist/components/tags-input/useTagsInput.d.ts +23 -0
  91. package/dist/components/toolbar/index.d.ts +3 -0
  92. package/dist/components/toolbar/index.js +2 -0
  93. package/dist/components/toolbar/toolbar.d.ts +24 -0
  94. package/dist/components/toolbar/types.d.ts +12 -0
  95. package/dist/components/toolbar/useToolbar.d.ts +7 -0
  96. package/dist/components/tooltip/useTooltipTargetBindings.d.ts +12 -0
  97. package/dist/date-picker.css +49 -0
  98. package/dist/date-picker.js +811 -0
  99. package/dist/dialog.js +9 -20
  100. package/dist/direction.js +6 -0
  101. package/dist/dropdown-menu.css +21 -3
  102. package/dist/dropdown-menu.js +341 -261
  103. package/dist/dropzone.css +135 -0
  104. package/dist/dropzone.js +431 -0
  105. package/dist/file-input.css +135 -0
  106. package/dist/file-input.js +198 -0
  107. package/dist/focusNavigation.js +12 -6
  108. package/dist/hover-card.css +80 -0
  109. package/dist/hover-card.js +402 -0
  110. package/dist/index.d.ts +10 -0
  111. package/dist/index.js +15 -3
  112. package/dist/internal/composables/useOverlayLayer.d.ts +12 -0
  113. package/dist/modal.js +1 -1
  114. package/dist/multi-select.css +316 -0
  115. package/dist/multi-select.js +481 -0
  116. package/dist/nativeChoice.js +169 -0
  117. package/dist/number-input.css +18 -18
  118. package/dist/number-input.js +36 -38
  119. package/dist/pagination.js +1 -10
  120. package/dist/pointerSession.js +130 -0
  121. package/dist/popover.css +21 -3
  122. package/dist/popover.js +37 -62
  123. package/dist/scroll-area.js +52 -62
  124. package/dist/segmented-control.css +176 -0
  125. package/dist/segmented-control.js +382 -0
  126. package/dist/select.css +50 -48
  127. package/dist/select.js +121 -271
  128. package/dist/slider.css +78 -69
  129. package/dist/slider.js +161 -145
  130. package/dist/tags-input.css +197 -0
  131. package/dist/tags-input.js +380 -0
  132. package/dist/toolbar.css +15 -0
  133. package/dist/toolbar.js +143 -0
  134. package/dist/tooltip.js +35 -30
  135. package/dist/useEditableOptionList.js +216 -0
  136. package/dist/useFlatOptionCollection.js +134 -0
  137. package/dist/useFloatingPosition.js +4 -160
  138. package/dist/useFloatingTargetLifecycle.js +127 -0
  139. package/dist/useFormControl.js +1 -0
  140. package/dist/{floating.js → useHoverDisclosure.js} +338 -421
  141. package/dist/useNativeChoiceTransaction.js +46 -0
  142. package/dist/useNativeFileSelection.js +86 -0
  143. package/dist/useOverlayZIndex.js +246 -15
  144. package/dist/utils/date.d.ts +13 -0
  145. package/dist/utils/dateAvailability.d.ts +7 -0
  146. package/dist/utils/dom/ancestry.d.ts +1 -0
  147. package/dist/utils/dom/direction.d.ts +2 -0
  148. package/dist/utils/dom/files.d.ts +3 -0
  149. package/dist/utils/dom/focusNavigation.d.ts +4 -1
  150. package/dist/utils/dom/nativeChoice.d.ts +17 -0
  151. package/dist/utils/dom/pointerSession.d.ts +20 -0
  152. package/dist/utils/dom/scroll.d.ts +2 -1
  153. package/dist/utils/optionFilter.d.ts +5 -0
  154. package/docs/public-floating-api.md +7 -4
  155. package/docs/public-styles-api.md +28 -12
  156. package/package.json +68 -40
  157. package/src/styles/_mixins.scss +26 -0
  158. package/src/styles/styles-manifest.json +1 -2
  159. package/dist/components/floating/hoverDisclosureInteractionModel.d.ts +0 -42
  160. package/dist/components/floating/useHoverDisclosureInteractions.d.ts +0 -32
  161. package/dist/components/floating/useHoverDisclosureOpenState.d.ts +0 -25
  162. package/dist/components/floating/useHoverDisclosureTargetBinding.d.ts +0 -27
  163. package/dist/components/select/useSelectNativeControl.d.ts +0 -9
  164. package/dist/components/select/useSelectNativeValue.d.ts +0 -9
  165. package/dist/pointer.js +0 -9
  166. package/dist/utils/dom/pointer.d.ts +0 -2
  167. package/docs/code-architecture.md +0 -118
package/README.md CHANGED
@@ -142,11 +142,12 @@ Use typed `classNames` and `styles`, documented state attributes, and variables
142
142
 
143
143
  See the [Public Styles API](./docs/public-styles-api.md) and [public token table](./docs/public-tokens.md). Consumers can declare `reset, ropav.tokens, ropav.components, app` to establish their cascade layer order.
144
144
 
145
- For headless Tooltip, HoverCard and custom menu markup, see the
145
+ For headless floating content and custom overlay markup, see the
146
146
  [public floating API](./docs/public-floating-api.md).
147
147
 
148
148
  ## Development
149
149
 
150
- Contributors should follow the [code architecture guide](./docs/code-architecture.md) for component,
151
- composable, utility, dependency, and testing conventions. Run `pnpm run verify` before submitting a
152
- change.
150
+ Contributors should follow the
151
+ [code architecture guide](https://github.com/daopk/ropav/blob/main/docs/code-architecture.md) for
152
+ module seams, dependency direction, and testing conventions. Run `pnpm --workspace-root verify`
153
+ before submitting a change.
@@ -0,0 +1,136 @@
1
+ import { t as isElement } from "./query.js";
2
+ import { t as createRafScheduler } from "./rafScheduler.js";
3
+ //#region src/utils/dom/ancestry.ts
4
+ function getFrameElement(documentNode) {
5
+ try {
6
+ const frameElement = documentNode.defaultView?.frameElement;
7
+ return isElement(frameElement) ? frameElement : null;
8
+ } catch {
9
+ return null;
10
+ }
11
+ }
12
+ function getComposedParent(node) {
13
+ if (isElement(node) && node.assignedSlot) return node.assignedSlot;
14
+ if (node.parentNode) return node.parentNode;
15
+ if (node.nodeType === 9) return getFrameElement(node);
16
+ const host = "host" in node ? node.host : null;
17
+ return isElement(host) ? host : null;
18
+ }
19
+ function getComposedAncestry(node) {
20
+ const ancestry = [];
21
+ let current = node ?? null;
22
+ while (current) {
23
+ current = getComposedParent(current);
24
+ if (current) ancestry.push(current);
25
+ }
26
+ return ancestry;
27
+ }
28
+ function areNodeListsIdentical(left, right) {
29
+ return left.length === right.length && left.every((node, index) => node === right[index]);
30
+ }
31
+ function readComposedAncestryPaths(nodes) {
32
+ return nodes.map((node) => node ? [node, ...getComposedAncestry(node)] : []);
33
+ }
34
+ function areAncestryPathsIdentical(left, right) {
35
+ return left.length === right.length && left.every((path, index) => areNodeListsIdentical(path, right[index] ?? []));
36
+ }
37
+ function getNodeDocument(node) {
38
+ return node.nodeType === 9 ? node : node.ownerDocument;
39
+ }
40
+ function getMutationObserverConstructor(node) {
41
+ return getNodeDocument(node)?.defaultView?.MutationObserver ?? globalThis.MutationObserver;
42
+ }
43
+ function isShadowRootNode(node) {
44
+ return node.nodeType === 11 && "host" in node && isElement(node.host);
45
+ }
46
+ function hasDisconnectedAncestry(nodes) {
47
+ return nodes.some((node) => node != null && [node, ...getComposedAncestry(node)].some((ancestor) => !ancestor.isConnected));
48
+ }
49
+ function observeComposedAncestry(getNodes, onChange, options = {}) {
50
+ let paths = readComposedAncestryPaths(getNodes());
51
+ let mutationObservers = [];
52
+ let slotRoots = [];
53
+ let disposed = false;
54
+ let disconnectNotified = false;
55
+ const reconnectScheduler = createRafScheduler(check, getView);
56
+ function getView() {
57
+ for (const node of getNodes()) {
58
+ const view = node ? getNodeDocument(node)?.defaultView : null;
59
+ if (view) return view;
60
+ }
61
+ return null;
62
+ }
63
+ function scheduleReconnectCheck(nodes) {
64
+ if (!hasDisconnectedAncestry(nodes)) return;
65
+ if (!getView()?.requestAnimationFrame) return;
66
+ reconnectScheduler.schedule();
67
+ }
68
+ function disconnectTargets() {
69
+ for (const observer of mutationObservers) observer.disconnect();
70
+ mutationObservers = [];
71
+ for (const root of slotRoots) root.removeEventListener("slotchange", check);
72
+ slotRoots = [];
73
+ }
74
+ function observeTargets(nodes, nextPaths) {
75
+ const observedNodes = new Set(nextPaths.flat());
76
+ const nextSlotRoots = /* @__PURE__ */ new Set();
77
+ const observersByConstructor = /* @__PURE__ */ new Map();
78
+ for (const node of observedNodes) {
79
+ if (isElement(node) && node.shadowRoot) nextSlotRoots.add(node.shadowRoot);
80
+ if (isShadowRootNode(node)) nextSlotRoots.add(node);
81
+ const MutationObserverConstructor = getMutationObserverConstructor(node);
82
+ if (!MutationObserverConstructor) continue;
83
+ let observer = observersByConstructor.get(MutationObserverConstructor);
84
+ if (!observer) {
85
+ observer = new MutationObserverConstructor(check);
86
+ observersByConstructor.set(MutationObserverConstructor, observer);
87
+ }
88
+ if (isElement(node)) observer.observe(node, {
89
+ childList: true,
90
+ attributes: true,
91
+ attributeFilter: ["slot", "name"]
92
+ });
93
+ else observer.observe(node, { childList: true });
94
+ }
95
+ mutationObservers = [...observersByConstructor.values()];
96
+ slotRoots = [...nextSlotRoots];
97
+ for (const root of slotRoots) root.addEventListener("slotchange", check);
98
+ scheduleReconnectCheck(nodes);
99
+ }
100
+ function rebind(nodes, nextPaths) {
101
+ disconnectTargets();
102
+ paths = nextPaths;
103
+ observeTargets(nodes, paths);
104
+ }
105
+ function check() {
106
+ if (disposed) return;
107
+ const nodes = getNodes();
108
+ if (options.deferWhileDisconnected && hasDisconnectedAncestry(nodes)) {
109
+ if (options.notifyOnDisconnect && !disconnectNotified) onChange();
110
+ disconnectNotified = true;
111
+ scheduleReconnectCheck(nodes);
112
+ return;
113
+ }
114
+ const shouldNotifyReconnect = disconnectNotified && options.notifyOnDisconnect;
115
+ disconnectNotified = false;
116
+ reconnectScheduler.cancel();
117
+ const nextPaths = readComposedAncestryPaths(nodes);
118
+ if (areAncestryPathsIdentical(paths, nextPaths)) {
119
+ if (shouldNotifyReconnect) onChange();
120
+ return;
121
+ }
122
+ rebind(nodes, nextPaths);
123
+ onChange();
124
+ }
125
+ const initialNodes = getNodes();
126
+ paths = readComposedAncestryPaths(initialNodes);
127
+ observeTargets(initialNodes, paths);
128
+ return () => {
129
+ if (disposed) return;
130
+ disposed = true;
131
+ reconnectScheduler.cancel();
132
+ disconnectTargets();
133
+ };
134
+ }
135
+ //#endregion
136
+ export { observeComposedAncestry as n, getComposedAncestry as t };
@@ -0,0 +1,184 @@
1
+ @layer ropav.components {
2
+ .rp-calendar[data-v-9df33d1a] {
3
+ --_rp-calendar-day-size: var(--rp-size-control-sm);
4
+ --_rp-calendar-font-size: var(--rp-font-size-sm);
5
+ --_rp-calendar-gap: var(--rp-spacing-1);
6
+ --_rp-calendar-radius: var(--rp-radius-sm);
7
+ box-sizing: border-box;
8
+ display: inline-grid;
9
+ width: max-content;
10
+ max-width: 100%;
11
+ gap: var(--rp-spacing-2);
12
+ color: var(--rp-color-control-fg);
13
+ font-family: var(--rp-font-family);
14
+ font-size: var(--_rp-calendar-font-size);
15
+ line-height: 1;
16
+ vertical-align: middle;
17
+ }
18
+ .rp-calendar--size-xs[data-v-9df33d1a] {
19
+ --_rp-calendar-day-size: var(--rp-size-control-xs);
20
+ --_rp-calendar-font-size: var(--rp-font-size-xs);
21
+ --_rp-calendar-gap: calc(var(--rp-spacing-1) / 2);
22
+ }
23
+ .rp-calendar--size-sm[data-v-9df33d1a] {
24
+ --_rp-calendar-day-size: var(--rp-size-control-sm);
25
+ --_rp-calendar-font-size: var(--rp-font-size-sm);
26
+ --_rp-calendar-gap: var(--rp-spacing-1);
27
+ }
28
+ .rp-calendar--size-md[data-v-9df33d1a] {
29
+ --_rp-calendar-day-size: var(--rp-size-control-sm);
30
+ --_rp-calendar-font-size: var(--rp-font-size-sm);
31
+ --_rp-calendar-gap: var(--rp-spacing-1);
32
+ }
33
+ .rp-calendar--size-lg[data-v-9df33d1a] {
34
+ --_rp-calendar-day-size: var(--rp-size-control-md);
35
+ --_rp-calendar-font-size: var(--rp-font-size-md);
36
+ --_rp-calendar-gap: var(--rp-spacing-1);
37
+ }
38
+ .rp-calendar--size-xl[data-v-9df33d1a] {
39
+ --_rp-calendar-day-size: var(--rp-size-control-lg);
40
+ --_rp-calendar-font-size: var(--rp-font-size-lg);
41
+ --_rp-calendar-gap: var(--rp-spacing-2);
42
+ }
43
+ .rp-calendar--radius-none[data-v-9df33d1a] {
44
+ --_rp-calendar-radius: 0;
45
+ }
46
+ .rp-calendar--radius-xs[data-v-9df33d1a] {
47
+ --_rp-calendar-radius: var(--rp-radius-xs);
48
+ }
49
+ .rp-calendar--radius-sm[data-v-9df33d1a] {
50
+ --_rp-calendar-radius: var(--rp-radius-sm);
51
+ }
52
+ .rp-calendar--radius-md[data-v-9df33d1a] {
53
+ --_rp-calendar-radius: var(--rp-radius-md);
54
+ }
55
+ .rp-calendar--radius-lg[data-v-9df33d1a] {
56
+ --_rp-calendar-radius: var(--rp-radius-lg);
57
+ }
58
+ .rp-calendar--radius-xl[data-v-9df33d1a] {
59
+ --_rp-calendar-radius: var(--rp-radius-xl);
60
+ }
61
+ .rp-calendar--radius-full[data-v-9df33d1a] {
62
+ --_rp-calendar-radius: var(--rp-radius-full);
63
+ }
64
+ .rp-calendar__header[data-v-9df33d1a] {
65
+ display: grid;
66
+ grid-template-columns: var(--_rp-calendar-day-size) 1fr var(--_rp-calendar-day-size);
67
+ align-items: center;
68
+ gap: var(--_rp-calendar-gap);
69
+ }
70
+ .rp-calendar__month-label[data-v-9df33d1a] {
71
+ overflow: hidden;
72
+ font-weight: var(--rp-font-weight-semibold);
73
+ line-height: var(--_rp-calendar-day-size);
74
+ text-align: center;
75
+ text-overflow: ellipsis;
76
+ white-space: nowrap;
77
+ }
78
+ .rp-calendar__month-label--visually-hidden[data-v-9df33d1a] {
79
+ position: absolute;
80
+ width: 1px;
81
+ height: 1px;
82
+ padding: 0;
83
+ margin: -1px;
84
+ overflow: hidden;
85
+ clip: rect(0, 0, 0, 0);
86
+ white-space: nowrap;
87
+ border-width: 0;
88
+ }
89
+ .rp-calendar__control[data-v-9df33d1a], .rp-calendar__day[data-v-9df33d1a] {
90
+ padding: 0;
91
+ font: inherit;
92
+ background: none;
93
+ border: none;
94
+ cursor: pointer;
95
+ display: inline-flex;
96
+ align-items: center;
97
+ justify-content: center;
98
+ box-sizing: border-box;
99
+ width: var(--_rp-calendar-day-size);
100
+ height: var(--_rp-calendar-day-size);
101
+ border-radius: var(--_rp-calendar-radius);
102
+ color: inherit;
103
+ transition: color var(--rp-transition-fast), background-color var(--rp-transition-fast), box-shadow var(--rp-transition-fast);
104
+ }
105
+ .rp-calendar__control[data-v-9df33d1a]:focus-visible, .rp-calendar__day[data-v-9df33d1a]:focus-visible {
106
+ outline: none;
107
+ box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
108
+ }
109
+ @media (forced-colors: active) {
110
+ .rp-calendar__control[data-v-9df33d1a]:focus-visible, .rp-calendar__day[data-v-9df33d1a]:focus-visible {
111
+ outline: var(--rp-border-width-medium) solid Highlight;
112
+ outline-offset: 2px;
113
+ box-shadow: none;
114
+ }
115
+ }
116
+ .rp-calendar__control[data-v-9df33d1a] {
117
+ color: var(--rp-color-control-icon);
118
+ }
119
+ .rp-calendar__control[data-v-9df33d1a]:hover:not(:disabled) {
120
+ color: var(--rp-color-control-fg);
121
+ background-color: var(--rp-color-default-hover);
122
+ }
123
+ .rp-calendar__control[data-v-9df33d1a]:disabled {
124
+ cursor: not-allowed;
125
+ opacity: var(--rp-opacity-disabled);
126
+ }
127
+ .rp-calendar__control[data-v-9df33d1a] > svg {
128
+ width: 1em;
129
+ height: 1em;
130
+ }
131
+ .rp-calendar__grid[data-v-9df33d1a] {
132
+ border-spacing: var(--_rp-calendar-gap);
133
+ margin: calc(-1 * var(--_rp-calendar-gap));
134
+ table-layout: fixed;
135
+ }
136
+ .rp-calendar__weekday[data-v-9df33d1a], .rp-calendar__day-cell[data-v-9df33d1a] {
137
+ box-sizing: border-box;
138
+ width: var(--_rp-calendar-day-size);
139
+ height: var(--_rp-calendar-day-size);
140
+ padding: 0;
141
+ text-align: center;
142
+ }
143
+ .rp-calendar__weekday[data-v-9df33d1a] {
144
+ color: var(--rp-color-dimmed);
145
+ font-size: 0.85em;
146
+ font-weight: var(--rp-font-weight-medium);
147
+ }
148
+ .rp-calendar__day[data-v-9df33d1a] {
149
+ position: relative;
150
+ font: inherit;
151
+ }
152
+ .rp-calendar__day[data-v-9df33d1a]:hover:not(:disabled):not(.rp-calendar__day--selected) {
153
+ background-color: var(--rp-color-default-hover);
154
+ }
155
+ .rp-calendar__day--outside[data-v-9df33d1a] {
156
+ color: var(--rp-color-dimmed);
157
+ }
158
+ .rp-calendar__day--today[data-v-9df33d1a]::after {
159
+ position: absolute;
160
+ inset-inline-start: 50%;
161
+ bottom: max(2px, var(--_rp-calendar-day-size) * 0.1);
162
+ width: 4px;
163
+ height: 4px;
164
+ border-radius: 50%;
165
+ background-color: currentColor;
166
+ content: "";
167
+ transform: translateX(-50%);
168
+ }
169
+ .rp-calendar__day--selected[data-v-9df33d1a] {
170
+ color: var(--rp-color-control-selected-fg);
171
+ background-color: var(--rp-color-control-selected-bg);
172
+ }
173
+ .rp-calendar__day--selected[data-v-9df33d1a]:hover:not(:disabled) {
174
+ background-color: var(--rp-primary-color-filled-hover);
175
+ }
176
+ .rp-calendar__day[data-v-9df33d1a]:disabled {
177
+ cursor: not-allowed;
178
+ opacity: var(--rp-opacity-disabled);
179
+ }
180
+ .rp-calendar--disabled[data-v-9df33d1a] {
181
+ opacity: var(--rp-opacity-disabled);
182
+ cursor: not-allowed;
183
+ }
184
+ }