@acoyfellow/kumo-vue 0.0.1

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 (223) hide show
  1. package/kumo.manifest.json +1140 -0
  2. package/package/button.css +1 -0
  3. package/package/components/autocomplete.content.d.ts +4 -0
  4. package/package/components/autocomplete.content.js +21 -0
  5. package/package/components/autocomplete.d.ts +8 -0
  6. package/package/components/autocomplete.input-group.d.ts +4 -0
  7. package/package/components/autocomplete.input-group.js +21 -0
  8. package/package/components/autocomplete.item.d.ts +4 -0
  9. package/package/components/autocomplete.item.js +21 -0
  10. package/package/components/autocomplete.js +102 -0
  11. package/package/components/autocomplete.list.d.ts +4 -0
  12. package/package/components/autocomplete.list.js +21 -0
  13. package/package/components/badge.d.ts +8 -0
  14. package/package/components/badge.js +57 -0
  15. package/package/components/banner.d.ts +8 -0
  16. package/package/components/banner.js +71 -0
  17. package/package/components/breadcrumbs.current.d.ts +4 -0
  18. package/package/components/breadcrumbs.current.js +21 -0
  19. package/package/components/breadcrumbs.d.ts +8 -0
  20. package/package/components/breadcrumbs.js +86 -0
  21. package/package/components/breadcrumbs.link.d.ts +4 -0
  22. package/package/components/breadcrumbs.link.js +21 -0
  23. package/package/components/breadcrumbs.separator.d.ts +4 -0
  24. package/package/components/breadcrumbs.separator.js +21 -0
  25. package/package/components/button.d.ts +8 -0
  26. package/package/components/button.js +93 -0
  27. package/package/components/checkbox.d.ts +8 -0
  28. package/package/components/checkbox.js +77 -0
  29. package/package/components/clipboard-text.d.ts +8 -0
  30. package/package/components/clipboard-text.js +54 -0
  31. package/package/components/cloudflare-logo.d.ts +8 -0
  32. package/package/components/cloudflare-logo.js +70 -0
  33. package/package/components/code.d.ts +8 -0
  34. package/package/components/code.js +56 -0
  35. package/package/components/combobox.content.d.ts +4 -0
  36. package/package/components/combobox.content.js +21 -0
  37. package/package/components/combobox.d.ts +8 -0
  38. package/package/components/combobox.item.d.ts +4 -0
  39. package/package/components/combobox.item.js +21 -0
  40. package/package/components/combobox.js +101 -0
  41. package/package/components/combobox.list.d.ts +4 -0
  42. package/package/components/combobox.list.js +21 -0
  43. package/package/components/combobox.trigger-input.d.ts +4 -0
  44. package/package/components/combobox.trigger-input.js +21 -0
  45. package/package/components/command-palette.d.ts +8 -0
  46. package/package/components/command-palette.highlighted-text.d.ts +4 -0
  47. package/package/components/command-palette.highlighted-text.js +21 -0
  48. package/package/components/command-palette.input.d.ts +4 -0
  49. package/package/components/command-palette.input.js +21 -0
  50. package/package/components/command-palette.item.d.ts +4 -0
  51. package/package/components/command-palette.item.js +21 -0
  52. package/package/components/command-palette.js +126 -0
  53. package/package/components/command-palette.list.d.ts +4 -0
  54. package/package/components/command-palette.list.js +21 -0
  55. package/package/components/command-palette.root.d.ts +4 -0
  56. package/package/components/command-palette.root.js +21 -0
  57. package/package/components/date-picker.d.ts +8 -0
  58. package/package/components/date-picker.js +119 -0
  59. package/package/components/date-range-picker.d.ts +8 -0
  60. package/package/components/date-range-picker.js +154 -0
  61. package/package/components/dialog.close.d.ts +4 -0
  62. package/package/components/dialog.close.js +21 -0
  63. package/package/components/dialog.d.ts +8 -0
  64. package/package/components/dialog.description.d.ts +4 -0
  65. package/package/components/dialog.description.js +21 -0
  66. package/package/components/dialog.js +107 -0
  67. package/package/components/dialog.root.d.ts +4 -0
  68. package/package/components/dialog.root.js +21 -0
  69. package/package/components/dialog.title.d.ts +4 -0
  70. package/package/components/dialog.title.js +21 -0
  71. package/package/components/dialog.trigger.d.ts +4 -0
  72. package/package/components/dialog.trigger.js +21 -0
  73. package/package/components/dropdown-menu.content.d.ts +4 -0
  74. package/package/components/dropdown-menu.content.js +21 -0
  75. package/package/components/dropdown-menu.d.ts +8 -0
  76. package/package/components/dropdown-menu.item.d.ts +4 -0
  77. package/package/components/dropdown-menu.item.js +21 -0
  78. package/package/components/dropdown-menu.js +172 -0
  79. package/package/components/dropdown-menu.sub-content.d.ts +4 -0
  80. package/package/components/dropdown-menu.sub-content.js +21 -0
  81. package/package/components/dropdown-menu.sub-trigger.d.ts +4 -0
  82. package/package/components/dropdown-menu.sub-trigger.js +21 -0
  83. package/package/components/dropdown-menu.sub.d.ts +4 -0
  84. package/package/components/dropdown-menu.sub.js +21 -0
  85. package/package/components/dropdown-menu.trigger.d.ts +4 -0
  86. package/package/components/dropdown-menu.trigger.js +21 -0
  87. package/package/components/empty.d.ts +8 -0
  88. package/package/components/empty.js +68 -0
  89. package/package/components/field.d.ts +7 -0
  90. package/package/components/field.js +2 -0
  91. package/package/components/field.legacy.js +49 -0
  92. package/package/components/field.native-input.d.ts +4 -0
  93. package/package/components/field.native-input.js +21 -0
  94. package/package/components/field.semantic.js +43 -0
  95. package/package/components/grid-item.d.ts +8 -0
  96. package/package/components/grid-item.js +52 -0
  97. package/package/components/grid.d.ts +8 -0
  98. package/package/components/grid.js +58 -0
  99. package/package/components/input-area.d.ts +8 -0
  100. package/package/components/input-area.js +70 -0
  101. package/package/components/input-group.addon.d.ts +4 -0
  102. package/package/components/input-group.addon.js +21 -0
  103. package/package/components/input-group.button.d.ts +4 -0
  104. package/package/components/input-group.button.js +21 -0
  105. package/package/components/input-group.d.ts +8 -0
  106. package/package/components/input-group.input.d.ts +4 -0
  107. package/package/components/input-group.input.js +21 -0
  108. package/package/components/input-group.js +96 -0
  109. package/package/components/input-group.suffix.d.ts +4 -0
  110. package/package/components/input-group.suffix.js +21 -0
  111. package/package/components/input.d.ts +8 -0
  112. package/package/components/input.js +70 -0
  113. package/package/components/label.d.ts +8 -0
  114. package/package/components/label.js +56 -0
  115. package/package/components/layer-card.d.ts +8 -0
  116. package/package/components/layer-card.js +60 -0
  117. package/package/components/layer-card.primary.d.ts +4 -0
  118. package/package/components/layer-card.primary.js +21 -0
  119. package/package/components/layer-card.secondary.d.ts +4 -0
  120. package/package/components/layer-card.secondary.js +21 -0
  121. package/package/components/link.d.ts +8 -0
  122. package/package/components/link.js +58 -0
  123. package/package/components/loader.d.ts +8 -0
  124. package/package/components/loader.js +67 -0
  125. package/package/components/menu-bar.d.ts +8 -0
  126. package/package/components/menu-bar.js +76 -0
  127. package/package/components/meter.d.ts +8 -0
  128. package/package/components/meter.js +97 -0
  129. package/package/components/pagination.d.ts +8 -0
  130. package/package/components/pagination.js +157 -0
  131. package/package/components/popover.close.d.ts +4 -0
  132. package/package/components/popover.close.js +21 -0
  133. package/package/components/popover.content.d.ts +4 -0
  134. package/package/components/popover.content.js +21 -0
  135. package/package/components/popover.d.ts +8 -0
  136. package/package/components/popover.description.d.ts +4 -0
  137. package/package/components/popover.description.js +21 -0
  138. package/package/components/popover.js +138 -0
  139. package/package/components/popover.title.d.ts +4 -0
  140. package/package/components/popover.title.js +21 -0
  141. package/package/components/popover.trigger.d.ts +4 -0
  142. package/package/components/popover.trigger.js +21 -0
  143. package/package/components/radio.d.ts +8 -0
  144. package/package/components/radio.js +91 -0
  145. package/package/components/select.d.ts +8 -0
  146. package/package/components/select.js +200 -0
  147. package/package/components/select.option.d.ts +4 -0
  148. package/package/components/select.option.js +21 -0
  149. package/package/components/sensitive-input.d.ts +8 -0
  150. package/package/components/sensitive-input.js +82 -0
  151. package/package/components/sidebar.collapsible-content.d.ts +4 -0
  152. package/package/components/sidebar.collapsible-content.js +21 -0
  153. package/package/components/sidebar.collapsible.d.ts +4 -0
  154. package/package/components/sidebar.collapsible.js +21 -0
  155. package/package/components/sidebar.content.d.ts +4 -0
  156. package/package/components/sidebar.content.js +21 -0
  157. package/package/components/sidebar.d.ts +8 -0
  158. package/package/components/sidebar.footer.d.ts +4 -0
  159. package/package/components/sidebar.footer.js +21 -0
  160. package/package/components/sidebar.group-label.d.ts +4 -0
  161. package/package/components/sidebar.group-label.js +21 -0
  162. package/package/components/sidebar.group.d.ts +4 -0
  163. package/package/components/sidebar.group.js +21 -0
  164. package/package/components/sidebar.header.d.ts +4 -0
  165. package/package/components/sidebar.header.js +21 -0
  166. package/package/components/sidebar.js +140 -0
  167. package/package/components/sidebar.menu-button.d.ts +4 -0
  168. package/package/components/sidebar.menu-button.js +21 -0
  169. package/package/components/sidebar.menu.d.ts +4 -0
  170. package/package/components/sidebar.menu.js +21 -0
  171. package/package/components/sidebar.provider.d.ts +4 -0
  172. package/package/components/sidebar.provider.js +21 -0
  173. package/package/components/sidebar.resize-handle.d.ts +4 -0
  174. package/package/components/sidebar.resize-handle.js +21 -0
  175. package/package/components/sidebar.sliding-view.d.ts +4 -0
  176. package/package/components/sidebar.sliding-view.js +21 -0
  177. package/package/components/sidebar.sliding-views.d.ts +4 -0
  178. package/package/components/sidebar.sliding-views.js +21 -0
  179. package/package/components/sidebar.trigger.d.ts +4 -0
  180. package/package/components/sidebar.trigger.js +21 -0
  181. package/package/components/surface.d.ts +8 -0
  182. package/package/components/surface.js +60 -0
  183. package/package/components/switch.d.ts +8 -0
  184. package/package/components/switch.js +78 -0
  185. package/package/components/table-of-contents.d.ts +8 -0
  186. package/package/components/table-of-contents.group.d.ts +4 -0
  187. package/package/components/table-of-contents.group.js +21 -0
  188. package/package/components/table-of-contents.item.d.ts +4 -0
  189. package/package/components/table-of-contents.item.js +21 -0
  190. package/package/components/table-of-contents.js +78 -0
  191. package/package/components/table-of-contents.list.d.ts +4 -0
  192. package/package/components/table-of-contents.list.js +21 -0
  193. package/package/components/table-of-contents.title.d.ts +4 -0
  194. package/package/components/table-of-contents.title.js +21 -0
  195. package/package/components/table.body.d.ts +4 -0
  196. package/package/components/table.body.js +21 -0
  197. package/package/components/table.cell.d.ts +4 -0
  198. package/package/components/table.cell.js +21 -0
  199. package/package/components/table.d.ts +8 -0
  200. package/package/components/table.head.d.ts +4 -0
  201. package/package/components/table.head.js +21 -0
  202. package/package/components/table.header.d.ts +4 -0
  203. package/package/components/table.header.js +21 -0
  204. package/package/components/table.js +66 -0
  205. package/package/components/table.row.d.ts +4 -0
  206. package/package/components/table.row.js +21 -0
  207. package/package/components/tabs.d.ts +8 -0
  208. package/package/components/tabs.js +98 -0
  209. package/package/components/text.d.ts +8 -0
  210. package/package/components/text.js +64 -0
  211. package/package/components/toasty.d.ts +8 -0
  212. package/package/components/toasty.js +101 -0
  213. package/package/dialog.css +1 -0
  214. package/package/form.css +1 -0
  215. package/package/index.d.ts +119 -0
  216. package/package/index.js +119 -0
  217. package/package/native-control.css +1 -0
  218. package/package/navigation.css +1 -0
  219. package/package/popover.css +1 -0
  220. package/package/selection-command-date.css +1 -0
  221. package/package/styles.css +23 -0
  222. package/package/tokens.css +1 -0
  223. package/package.json +441 -0
@@ -0,0 +1,157 @@
1
+ import { defineComponent as _defineComponent } from 'vue';
2
+ import { computed, onMounted, ref, useAttrs, useSlots, watch } from 'vue';
3
+ export const modelDigest = "e429308d31e783f621359d7f7497bbae2ce32cc82be5a9a21f42a3664d712efb";
4
+ export const contentBindingDigest = "a6655036dbbdb2cd56a9e62bf5f2f8f75bb6a7bb4d3c5fbf41726fd8666277cd";
5
+ const __sfc__ = /*@__PURE__*/ _defineComponent({
6
+ __name: 'pagination',
7
+ props: {
8
+ compound: { type: null, required: false },
9
+ controls: { type: null, required: false, default: "full" },
10
+ labels: { type: null, required: false, default: "English canonical labels" },
11
+ page: { type: Number, required: false, default: 1 },
12
+ pageSelector: { type: null, required: false, default: "input" },
13
+ perPage: { type: Number, required: false },
14
+ setPage: { type: null, required: false },
15
+ totalCount: { type: Number, required: false },
16
+ fixtureMode: { type: String, required: false },
17
+ fixture: { type: null, required: false },
18
+ semanticContent: { type: null, required: false }
19
+ },
20
+ setup(__props, { expose: __expose }) {
21
+ __expose();
22
+ const props = __props;
23
+ const maximumPage = computed(() => Math.max(1, Math.ceil(props.totalCount / props.perPage)));
24
+ const currentPage = ref(1);
25
+ const editingPage = ref('1');
26
+ const navRef = ref(null);
27
+ onMounted(() => { currentPage.value = Math.min(maximumPage.value, Math.max(1, props.page)); editingPage.value = String(currentPage.value); });
28
+ watch(() => props.page, value => { currentPage.value = Math.min(maximumPage.value, Math.max(1, value)); editingPage.value = String(currentPage.value); });
29
+ function proposePage(target) {
30
+ const proposal = Math.min(maximumPage.value, Math.max(1, target));
31
+ if (proposal !== currentPage.value)
32
+ props.setPage?.(proposal);
33
+ }
34
+ function commitInput(trigger) {
35
+ const text = editingPage.value.trim();
36
+ const restore = () => { editingPage.value = String(currentPage.value); };
37
+ const focusNav = () => { if (trigger === 'blur' && navRef.value) {
38
+ navRef.value.setAttribute('tabindex', '-1');
39
+ navRef.value.focus();
40
+ } };
41
+ if (!/^[0-9]+$/.test(text)) {
42
+ restore();
43
+ focusNav();
44
+ return;
45
+ }
46
+ const parsed = Number(text);
47
+ if (!Number.isSafeInteger(parsed)) {
48
+ restore();
49
+ focusNav();
50
+ return;
51
+ }
52
+ const proposal = Math.min(maximumPage.value, Math.max(1, parsed));
53
+ editingPage.value = String(proposal);
54
+ if (proposal !== currentPage.value)
55
+ props.setPage?.(proposal);
56
+ focusNav();
57
+ }
58
+ function enterInput(event) { if (event.key === 'Enter')
59
+ commitInput('Enter'); }
60
+ const slots = useSlots();
61
+ const styles = {};
62
+ const normalizeSlotContent = (value) => Array.isArray(value) ? value.map(normalizeSlotContent).join('') : value == null || typeof value === 'boolean' ? '' : typeof value === 'string' || typeof value === 'number' ? String(value) : normalizeSlotContent(value.children);
63
+ const renderContent = () => props.semanticContent ?? normalizeSlotContent(slots.default?.());
64
+ const fixture = computed(() => props.fixture);
65
+ const semanticValues = Object.assign({}, useAttrs(), props);
66
+ const semanticEqual = (left, right) => JSON.stringify(left) === JSON.stringify(right);
67
+ const fixtureText = (value) => value && typeof value === 'object' ? String(typeof value.text === 'string' ? value.text : '') + (Array.isArray(value.children) ? value.children.map(fixtureText).join('') : '') : '';
68
+ const __returned__ = { modelDigest, contentBindingDigest, props, maximumPage, currentPage, editingPage, navRef, proposePage, commitInput, enterInput, slots, styles, normalizeSlotContent, renderContent, fixture, semanticValues, semanticEqual, fixtureText };
69
+ Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true });
70
+ return __returned__;
71
+ }
72
+ });
73
+ import { createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from "vue";
74
+ const _hoisted_1 = { "data-slot": "pagination" };
75
+ const _hoisted_2 = ["aria-label"];
76
+ const _hoisted_3 = ["disabled"];
77
+ const _hoisted_4 = ["disabled"];
78
+ const _hoisted_5 = ["value"];
79
+ const _hoisted_6 = ["disabled"];
80
+ const _hoisted_7 = ["disabled"];
81
+ const _hoisted_8 = ["aria-label", "disabled"];
82
+ const _hoisted_9 = ["aria-label", "disabled"];
83
+ function render(_ctx, _cache, $props, $setup, $data, $options) {
84
+ return (_openBlock(), _createElementBlock("div", _hoisted_1, [
85
+ _createElementVNode("nav", {
86
+ ref: "navRef",
87
+ "aria-label": $setup.props.labels?.navigation ?? 'Pagination'
88
+ }, [
89
+ ($setup.props.fixtureMode !== 'simple')
90
+ ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [
91
+ _createElementVNode("button", {
92
+ type: "button",
93
+ "aria-label": "First page",
94
+ disabled: $setup.currentPage === 1,
95
+ onClick: _cache[0] || (_cache[0] = $event => ($setup.proposePage(1)))
96
+ }, null, 8 /* PROPS */, _hoisted_3),
97
+ _createElementVNode("button", {
98
+ type: "button",
99
+ "aria-label": "Previous page",
100
+ disabled: $setup.currentPage === 1,
101
+ onClick: _cache[1] || (_cache[1] = $event => ($setup.proposePage($setup.currentPage - 1)))
102
+ }, null, 8 /* PROPS */, _hoisted_4),
103
+ _createElementVNode("input", {
104
+ "aria-label": "Page number",
105
+ value: $setup.editingPage,
106
+ onInput: _cache[2] || (_cache[2] = $event => ($setup.editingPage = $event.currentTarget.value)),
107
+ onKeydown: $setup.enterInput,
108
+ onBlur: _cache[3] || (_cache[3] = $event => ($setup.commitInput('blur')))
109
+ }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_5),
110
+ _createElementVNode("button", {
111
+ type: "button",
112
+ "aria-label": "Next page",
113
+ disabled: $setup.currentPage === $setup.maximumPage,
114
+ onClick: _cache[4] || (_cache[4] = $event => ($setup.proposePage($setup.currentPage + 1)))
115
+ }, null, 8 /* PROPS */, _hoisted_6),
116
+ _createElementVNode("button", {
117
+ type: "button",
118
+ "aria-label": "Last page",
119
+ disabled: $setup.currentPage === $setup.maximumPage,
120
+ onClick: _cache[5] || (_cache[5] = $event => ($setup.proposePage($setup.maximumPage)))
121
+ }, null, 8 /* PROPS */, _hoisted_7),
122
+ ($setup.props.fixtureMode === 'dropdown')
123
+ ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [
124
+ _cache[8] || (_cache[8] = _createElementVNode("button", {
125
+ type: "button",
126
+ "aria-label": "Page size"
127
+ }, null, -1 /* CACHED */)),
128
+ _cache[9] || (_cache[9] = _createElementVNode("button", {
129
+ type: "button",
130
+ "aria-label": "Open page size options"
131
+ }, null, -1 /* CACHED */))
132
+ ], 64 /* STABLE_FRAGMENT */))
133
+ : _createCommentVNode("v-if", true)
134
+ ], 64 /* STABLE_FRAGMENT */))
135
+ : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [
136
+ _createElementVNode("button", {
137
+ type: "button",
138
+ "aria-label": $setup.props.labels?.previousPage ?? 'Previous page',
139
+ disabled: $setup.currentPage === 1,
140
+ onClick: _cache[6] || (_cache[6] = $event => ($setup.proposePage($setup.currentPage - 1)))
141
+ }, null, 8 /* PROPS */, _hoisted_8),
142
+ _createElementVNode("button", {
143
+ type: "button",
144
+ "aria-label": $setup.props.labels?.nextPage ?? 'Next page',
145
+ disabled: $setup.currentPage === $setup.maximumPage,
146
+ onClick: _cache[7] || (_cache[7] = $event => ($setup.proposePage($setup.currentPage + 1)))
147
+ }, null, 8 /* PROPS */, _hoisted_9)
148
+ ], 64 /* STABLE_FRAGMENT */))
149
+ ], 8 /* PROPS */, _hoisted_2)
150
+ ]));
151
+ }
152
+ __sfc__.render = render;
153
+ __sfc__.name = "KumoPagination";
154
+ __sfc__.__file = "components/pagination.vue";
155
+ export default __sfc__;
156
+
157
+ export { __sfc__ as Pagination }
@@ -0,0 +1,4 @@
1
+ // @generated by src/kumo/emitters/vue/index.mjs; do not edit
2
+ import type { DefineComponent } from 'vue';
3
+ declare const component: DefineComponent<Record<string, unknown>>;
4
+ export default component;
@@ -0,0 +1,21 @@
1
+ import { defineComponent as _defineComponent } from 'vue';
2
+ const __sfc__ = /*@__PURE__*/ _defineComponent({
3
+ ...{ inheritAttrs: false },
4
+ __name: 'popover.close',
5
+ setup(__props, { expose: __expose }) {
6
+ __expose();
7
+ const __returned__ = {};
8
+ Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true });
9
+ return __returned__;
10
+ }
11
+ });
12
+ import { renderSlot as _renderSlot, mergeProps as _mergeProps, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue";
13
+ function render(_ctx, _cache, $props, $setup, $data, $options) {
14
+ return (_openBlock(), _createElementBlock("span", _mergeProps(_ctx.$attrs, { "data-kumo-part": "Close" }), [
15
+ _renderSlot(_ctx.$slots, "default")
16
+ ], 16 /* FULL_PROPS */));
17
+ }
18
+ __sfc__.render = render;
19
+ __sfc__.name = "KumoPopoverClose";
20
+ __sfc__.__file = "components/popover.close.vue";
21
+ export default __sfc__;
@@ -0,0 +1,4 @@
1
+ // @generated by src/kumo/emitters/vue/index.mjs; do not edit
2
+ import type { DefineComponent } from 'vue';
3
+ declare const component: DefineComponent<Record<string, unknown>>;
4
+ export default component;
@@ -0,0 +1,21 @@
1
+ import { defineComponent as _defineComponent } from 'vue';
2
+ const __sfc__ = /*@__PURE__*/ _defineComponent({
3
+ ...{ inheritAttrs: false },
4
+ __name: 'popover.content',
5
+ setup(__props, { expose: __expose }) {
6
+ __expose();
7
+ const __returned__ = {};
8
+ Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true });
9
+ return __returned__;
10
+ }
11
+ });
12
+ import { renderSlot as _renderSlot, mergeProps as _mergeProps, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue";
13
+ function render(_ctx, _cache, $props, $setup, $data, $options) {
14
+ return (_openBlock(), _createElementBlock("span", _mergeProps(_ctx.$attrs, { "data-kumo-part": "Content" }), [
15
+ _renderSlot(_ctx.$slots, "default")
16
+ ], 16 /* FULL_PROPS */));
17
+ }
18
+ __sfc__.render = render;
19
+ __sfc__.name = "KumoPopoverContent";
20
+ __sfc__.__file = "components/popover.content.vue";
21
+ export default __sfc__;
@@ -0,0 +1,8 @@
1
+ // @generated by src/kumo/emitters/vue/index.mjs; do not edit
2
+ import type { DefineComponent } from 'vue';
3
+ export interface PopoverProps { [key: string]: unknown }
4
+ declare const component: DefineComponent<PopoverProps>;
5
+ export default component;
6
+ export declare const modelDigest: "cc912e264b579e2ed770a09131e4874ada9d948fefc9f1dc9be0b0a9d038de4d";
7
+
8
+ export { component as Popover };
@@ -0,0 +1,4 @@
1
+ // @generated by src/kumo/emitters/vue/index.mjs; do not edit
2
+ import type { DefineComponent } from 'vue';
3
+ declare const component: DefineComponent<Record<string, unknown>>;
4
+ export default component;
@@ -0,0 +1,21 @@
1
+ import { defineComponent as _defineComponent } from 'vue';
2
+ const __sfc__ = /*@__PURE__*/ _defineComponent({
3
+ ...{ inheritAttrs: false },
4
+ __name: 'popover.description',
5
+ setup(__props, { expose: __expose }) {
6
+ __expose();
7
+ const __returned__ = {};
8
+ Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true });
9
+ return __returned__;
10
+ }
11
+ });
12
+ import { renderSlot as _renderSlot, mergeProps as _mergeProps, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue";
13
+ function render(_ctx, _cache, $props, $setup, $data, $options) {
14
+ return (_openBlock(), _createElementBlock("span", _mergeProps(_ctx.$attrs, { "data-kumo-part": "Description" }), [
15
+ _renderSlot(_ctx.$slots, "default")
16
+ ], 16 /* FULL_PROPS */));
17
+ }
18
+ __sfc__.render = render;
19
+ __sfc__.name = "KumoPopoverDescription";
20
+ __sfc__.__file = "components/popover.description.vue";
21
+ export default __sfc__;
@@ -0,0 +1,138 @@
1
+ import { defineComponent as _defineComponent } from 'vue';
2
+ import { computed, getCurrentInstance, nextTick, onMounted, ref, useAttrs, useSlots } from 'vue';
3
+ export const modelDigest = "cc912e264b579e2ed770a09131e4874ada9d948fefc9f1dc9be0b0a9d038de4d";
4
+ export const contentBindingDigest = "a6655036dbbdb2cd56a9e62bf5f2f8f75bb6a7bb4d3c5fbf41726fd8666277cd";
5
+ const __sfc__ = /*@__PURE__*/ _defineComponent({
6
+ ...{ inheritAttrs: false },
7
+ __name: 'popover',
8
+ props: {
9
+ Close: { type: null, required: false },
10
+ Content: { type: null, required: false },
11
+ Root: { type: null, required: false },
12
+ "Title/Description": { type: null, required: false },
13
+ Trigger: { type: null, required: false },
14
+ open: { type: Boolean, required: false },
15
+ onOpenChange: { type: null, required: false },
16
+ defaultOpen: { type: Boolean, required: false },
17
+ fixture: { type: null, required: false },
18
+ semanticContent: { type: null, required: false }
19
+ },
20
+ setup(__props, { expose: __expose }) {
21
+ __expose();
22
+ const props = __props;
23
+ const instance = getCurrentInstance();
24
+ const controlled = computed(() => Object.prototype.hasOwnProperty.call(instance?.vnode.props ?? {}, 'open'));
25
+ const internalOpen = ref(Boolean(props.defaultOpen));
26
+ const currentOpen = computed(() => controlled.value ? Boolean(props.open) : internalOpen.value);
27
+ const popoverFixture = computed(() => props.fixture);
28
+ const fixtureChildren = (node) => node?.children ?? [];
29
+ const fixturePart = (name) => fixtureChildren(popoverFixture.value).find(node => node.export === name);
30
+ const partText = (node) => node ? String(node.text ?? '') + fixtureChildren(node).map(partText).join('') : '';
31
+ const triggerPart = computed(() => fixturePart('.Trigger'));
32
+ const contentPart = computed(() => fixturePart('.Content'));
33
+ const triggerRef = ref(null);
34
+ const contentRef = ref(null);
35
+ const mounted = ref(false);
36
+ const resolvedSide = ref('bottom');
37
+ const requestedSide = computed(() => String(contentPart.value?.props?.side ?? 'bottom'));
38
+ const align = computed(() => String(contentPart.value?.props?.align ?? 'center'));
39
+ const positionMethod = computed(() => String(contentPart.value?.props?.positionMethod ?? 'absolute'));
40
+ function resolveCollision() {
41
+ resolvedSide.value = requestedSide.value;
42
+ if (requestedSide.value !== 'top')
43
+ return;
44
+ const trigger = triggerRef.value?.getBoundingClientRect();
45
+ const contentHeight = contentRef.value?.getBoundingClientRect().height ?? 0;
46
+ const offset = Number(contentPart.value?.props?.sideOffset ?? 8);
47
+ if (trigger && trigger.top < contentHeight + offset)
48
+ resolvedSide.value = 'bottom';
49
+ }
50
+ onMounted(() => { mounted.value = true; if (currentOpen.value)
51
+ nextTick(resolveCollision); });
52
+ function setOpen(next) {
53
+ if (!controlled.value)
54
+ internalOpen.value = next;
55
+ props.onOpenChange?.(next);
56
+ if (next)
57
+ nextTick(resolveCollision);
58
+ else
59
+ nextTick(() => triggerRef.value?.focus());
60
+ }
61
+ function handleKey(event) {
62
+ if (event.key !== 'Escape' || !currentOpen.value)
63
+ return;
64
+ event.preventDefault();
65
+ setOpen(false);
66
+ nextTick(() => triggerRef.value?.focus());
67
+ }
68
+ const slots = useSlots();
69
+ const styles = {};
70
+ const normalizeSlotContent = (value) => Array.isArray(value) ? value.map(normalizeSlotContent).join('') : value == null || typeof value === 'boolean' ? '' : typeof value === 'string' || typeof value === 'number' ? String(value) : normalizeSlotContent(value.children);
71
+ const renderContent = () => props.semanticContent ?? normalizeSlotContent(slots.default?.());
72
+ const fixture = computed(() => props.fixture);
73
+ const semanticValues = Object.assign({}, useAttrs(), props);
74
+ const semanticEqual = (left, right) => JSON.stringify(left) === JSON.stringify(right);
75
+ const fixtureText = (value) => value && typeof value === 'object' ? String(typeof value.text === 'string' ? value.text : '') + (Array.isArray(value.children) ? value.children.map(fixtureText).join('') : '') : '';
76
+ const __returned__ = { modelDigest, contentBindingDigest, props, instance, controlled, internalOpen, currentOpen, popoverFixture, fixtureChildren, fixturePart, partText, triggerPart, contentPart, triggerRef, contentRef, mounted, resolvedSide, requestedSide, align, positionMethod, resolveCollision, setOpen, handleKey, slots, styles, normalizeSlotContent, renderContent, fixture, semanticValues, semanticEqual, fixtureText };
77
+ Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true });
78
+ return __returned__;
79
+ }
80
+ });
81
+ import { toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, Teleport as _Teleport, createBlock as _createBlock, mergeProps as _mergeProps } from "vue";
82
+ const _hoisted_1 = ["aria-expanded"];
83
+ const _hoisted_2 = ["data-side", "data-align", "data-position-method"];
84
+ const _hoisted_3 = { key: 0 };
85
+ const _hoisted_4 = { key: 1 };
86
+ function render(_ctx, _cache, $props, $setup, $data, $options) {
87
+ return (_openBlock(), _createElementBlock("button", _mergeProps({ ref: "triggerRef" }, _ctx.$attrs, {
88
+ type: "button",
89
+ tabindex: "0",
90
+ "aria-haspopup": "dialog",
91
+ "aria-expanded": $setup.currentOpen,
92
+ "data-kumo-component": "Popover",
93
+ "data-kumo-part": "trigger",
94
+ onClick: _cache[1] || (_cache[1] = $event => ($setup.setOpen(true))),
95
+ onKeydown: $setup.handleKey
96
+ }), [
97
+ _createTextVNode(_toDisplayString($setup.partText($setup.triggerPart)), 1 /* TEXT */),
98
+ ($setup.mounted && $setup.currentOpen)
99
+ ? (_openBlock(), _createBlock(_Teleport, {
100
+ key: 0,
101
+ to: "body"
102
+ }, [
103
+ _createElementVNode("div", {
104
+ ref: "contentRef",
105
+ role: "dialog",
106
+ "data-side": $setup.resolvedSide,
107
+ "data-align": $setup.align,
108
+ "data-position-method": $setup.positionMethod,
109
+ onKeydown: $setup.handleKey
110
+ }, [
111
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.fixtureChildren($setup.contentPart), (child, index) => {
112
+ return (_openBlock(), _createElementBlock(_Fragment, { key: index }, [
113
+ (child.export === '.Title')
114
+ ? (_openBlock(), _createElementBlock("h2", _hoisted_3, _toDisplayString($setup.partText(child)), 1 /* TEXT */))
115
+ : (child.export === '.Description')
116
+ ? (_openBlock(), _createElementBlock("p", _hoisted_4, _toDisplayString($setup.partText(child)), 1 /* TEXT */))
117
+ : (child.export === '.Close')
118
+ ? (_openBlock(), _createElementBlock("button", {
119
+ key: 2,
120
+ type: "button",
121
+ onClick: _cache[0] || (_cache[0] = _withModifiers($event => ($setup.setOpen(false)), ["stop"]))
122
+ }, _toDisplayString($setup.partText(child)), 1 /* TEXT */))
123
+ : (_openBlock(), _createElementBlock(_Fragment, { key: 3 }, [
124
+ _createTextVNode(_toDisplayString($setup.partText(child)), 1 /* TEXT */)
125
+ ], 64 /* STABLE_FRAGMENT */))
126
+ ], 64 /* STABLE_FRAGMENT */));
127
+ }), 128 /* KEYED_FRAGMENT */))
128
+ ], 40 /* PROPS, NEED_HYDRATION */, _hoisted_2)
129
+ ]))
130
+ : _createCommentVNode("v-if", true)
131
+ ], 16 /* FULL_PROPS */, _hoisted_1));
132
+ }
133
+ __sfc__.render = render;
134
+ __sfc__.name = "KumoPopover";
135
+ __sfc__.__file = "components/popover.vue";
136
+ export default __sfc__;
137
+
138
+ export { __sfc__ as Popover }
@@ -0,0 +1,4 @@
1
+ // @generated by src/kumo/emitters/vue/index.mjs; do not edit
2
+ import type { DefineComponent } from 'vue';
3
+ declare const component: DefineComponent<Record<string, unknown>>;
4
+ export default component;
@@ -0,0 +1,21 @@
1
+ import { defineComponent as _defineComponent } from 'vue';
2
+ const __sfc__ = /*@__PURE__*/ _defineComponent({
3
+ ...{ inheritAttrs: false },
4
+ __name: 'popover.title',
5
+ setup(__props, { expose: __expose }) {
6
+ __expose();
7
+ const __returned__ = {};
8
+ Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true });
9
+ return __returned__;
10
+ }
11
+ });
12
+ import { renderSlot as _renderSlot, mergeProps as _mergeProps, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue";
13
+ function render(_ctx, _cache, $props, $setup, $data, $options) {
14
+ return (_openBlock(), _createElementBlock("span", _mergeProps(_ctx.$attrs, { "data-kumo-part": "Title" }), [
15
+ _renderSlot(_ctx.$slots, "default")
16
+ ], 16 /* FULL_PROPS */));
17
+ }
18
+ __sfc__.render = render;
19
+ __sfc__.name = "KumoPopoverTitle";
20
+ __sfc__.__file = "components/popover.title.vue";
21
+ export default __sfc__;
@@ -0,0 +1,4 @@
1
+ // @generated by src/kumo/emitters/vue/index.mjs; do not edit
2
+ import type { DefineComponent } from 'vue';
3
+ declare const component: DefineComponent<Record<string, unknown>>;
4
+ export default component;
@@ -0,0 +1,21 @@
1
+ import { defineComponent as _defineComponent } from 'vue';
2
+ const __sfc__ = /*@__PURE__*/ _defineComponent({
3
+ ...{ inheritAttrs: false },
4
+ __name: 'popover.trigger',
5
+ setup(__props, { expose: __expose }) {
6
+ __expose();
7
+ const __returned__ = {};
8
+ Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true });
9
+ return __returned__;
10
+ }
11
+ });
12
+ import { renderSlot as _renderSlot, mergeProps as _mergeProps, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue";
13
+ function render(_ctx, _cache, $props, $setup, $data, $options) {
14
+ return (_openBlock(), _createElementBlock("span", _mergeProps(_ctx.$attrs, { "data-kumo-part": "Trigger" }), [
15
+ _renderSlot(_ctx.$slots, "default")
16
+ ], 16 /* FULL_PROPS */));
17
+ }
18
+ __sfc__.render = render;
19
+ __sfc__.name = "KumoPopoverTrigger";
20
+ __sfc__.__file = "components/popover.trigger.vue";
21
+ export default __sfc__;
@@ -0,0 +1,8 @@
1
+ // @generated by src/kumo/emitters/vue/index.mjs; do not edit
2
+ import type { DefineComponent } from 'vue';
3
+ export interface RadioProps { [key: string]: unknown }
4
+ declare const component: DefineComponent<RadioProps>;
5
+ export default component;
6
+ export declare const modelDigest: "851f6bb506c384c8d6d8ec9583d3ec05a0cf060d5d9192464a29ba55e1185844";
7
+
8
+ export { component as Radio };
@@ -0,0 +1,91 @@
1
+ import { defineComponent as _defineComponent } from 'vue';
2
+ import { computed, nextTick, ref, useAttrs, useSlots } from 'vue';
3
+ export const modelDigest = "851f6bb506c384c8d6d8ec9583d3ec05a0cf060d5d9192464a29ba55e1185844";
4
+ export const contentBindingDigest = "a6655036dbbdb2cd56a9e62bf5f2f8f75bb6a7bb4d3c5fbf41726fd8666277cd";
5
+ const __sfc__ = /*@__PURE__*/ _defineComponent({
6
+ ...{ inheritAttrs: false },
7
+ __name: 'radio',
8
+ props: {
9
+ defaultValue: { type: String, required: false },
10
+ disabled: { type: Boolean, required: false },
11
+ items: { type: null, required: false },
12
+ onValueChange: { type: null, required: false },
13
+ orientation: { type: null, required: false, default: "vertical" },
14
+ value: { type: String, required: false },
15
+ setValue: { type: null, required: false },
16
+ fixture: { type: null, required: false },
17
+ semanticContent: { type: null, required: false }
18
+ },
19
+ setup(__props, { expose: __expose }) {
20
+ __expose();
21
+ const props = __props;
22
+ const radioFixture = computed(() => props.fixture);
23
+ const controlled = computed(() => Object.prototype.hasOwnProperty.call(radioFixture.value ?? {}, 'value'));
24
+ const internalValue = ref(radioFixture.value?.defaultValue);
25
+ const selectedValue = computed(() => controlled.value ? radioFixture.value?.value : internalValue.value);
26
+ const groupRef = ref(null);
27
+ function selectRadio(item) {
28
+ if (radioFixture.value?.disabled || item.disabled)
29
+ return;
30
+ if (!controlled.value)
31
+ internalValue.value = item.value;
32
+ (props.setValue ?? props.onValueChange)?.(item.value);
33
+ nextTick(() => { if (groupRef.value) {
34
+ groupRef.value.setAttribute('tabindex', '-1');
35
+ groupRef.value.focus();
36
+ } });
37
+ }
38
+ function selectNext(index, event) {
39
+ if (event.key !== 'ArrowDown' || radioFixture.value?.disabled)
40
+ return;
41
+ event.preventDefault();
42
+ const items = radioFixture.value?.items ?? [];
43
+ for (let offset = 1; offset <= items.length; offset++) {
44
+ const item = items[(index + offset) % items.length];
45
+ if (!item.disabled) {
46
+ selectRadio(item);
47
+ return;
48
+ }
49
+ }
50
+ }
51
+ const slots = useSlots();
52
+ const styles = {};
53
+ const normalizeSlotContent = (value) => Array.isArray(value) ? value.map(normalizeSlotContent).join('') : value == null || typeof value === 'boolean' ? '' : typeof value === 'string' || typeof value === 'number' ? String(value) : normalizeSlotContent(value.children);
54
+ const renderContent = () => props.semanticContent ?? normalizeSlotContent(slots.default?.());
55
+ const fixture = computed(() => props.fixture);
56
+ const semanticValues = Object.assign({}, useAttrs(), props);
57
+ const semanticEqual = (left, right) => JSON.stringify(left) === JSON.stringify(right);
58
+ const fixtureText = (value) => value && typeof value === 'object' ? String(typeof value.text === 'string' ? value.text : '') + (Array.isArray(value.children) ? value.children.map(fixtureText).join('') : '') : '';
59
+ const __returned__ = { modelDigest, contentBindingDigest, props, radioFixture, controlled, internalValue, selectedValue, groupRef, selectRadio, selectNext, slots, styles, normalizeSlotContent, renderContent, fixture, semanticValues, semanticEqual, fixtureText };
60
+ Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true });
61
+ return __returned__;
62
+ }
63
+ });
64
+ import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, mergeProps as _mergeProps } from "vue";
65
+ const _hoisted_1 = ["aria-label"];
66
+ const _hoisted_2 = ["tabindex", "aria-checked", "aria-label", "aria-disabled", "onClick", "onKeydown"];
67
+ function render(_ctx, _cache, $props, $setup, $data, $options) {
68
+ return (_openBlock(), _createElementBlock("div", _mergeProps({ ref: "groupRef" }, _ctx.$attrs, {
69
+ role: "radiogroup",
70
+ "aria-label": $setup.radioFixture.legend
71
+ }), [
72
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.radioFixture.items, (item, index) => {
73
+ return (_openBlock(), _createElementBlock("div", {
74
+ key: String(item.value),
75
+ role: "radio",
76
+ tabindex: ($setup.radioFixture.disabled || item.disabled) ? undefined : 0,
77
+ "aria-checked": item.value === $setup.selectedValue,
78
+ "aria-label": item.label,
79
+ "aria-disabled": $setup.radioFixture.disabled || item.disabled || undefined,
80
+ onClick: $event => ($setup.selectRadio(item)),
81
+ onKeydown: $event => ($setup.selectNext(index, $event))
82
+ }, _toDisplayString(item.label), 41 /* TEXT, PROPS, NEED_HYDRATION */, _hoisted_2));
83
+ }), 128 /* KEYED_FRAGMENT */))
84
+ ], 16 /* FULL_PROPS */, _hoisted_1));
85
+ }
86
+ __sfc__.render = render;
87
+ __sfc__.name = "KumoRadio";
88
+ __sfc__.__file = "components/radio.vue";
89
+ export default __sfc__;
90
+
91
+ export { __sfc__ as Radio }
@@ -0,0 +1,8 @@
1
+ // @generated by src/kumo/emitters/vue/index.mjs; do not edit
2
+ import type { DefineComponent } from 'vue';
3
+ export interface SelectProps { [key: string]: unknown }
4
+ declare const component: DefineComponent<SelectProps>;
5
+ export default component;
6
+ export declare const modelDigest: "0c3f889199eb1006a83fb3d1f7315e54f420dbb14327c8661decd4eb1b7a3215";
7
+
8
+ export { component as Select };