@mekari/pixel3-tabs 0.0.0

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 (48) hide show
  1. package/dist/chunk-5R2IYROF.mjs +43 -0
  2. package/dist/chunk-BCRB3ASV.mjs +29 -0
  3. package/dist/chunk-DKZ3Z2UI.mjs +61 -0
  4. package/dist/chunk-JEXLKDPT.mjs +38 -0
  5. package/dist/chunk-JQQ5YTMJ.mjs +31 -0
  6. package/dist/chunk-LAMJMXQC.mjs +56 -0
  7. package/dist/chunk-QVDBBOCQ.mjs +146 -0
  8. package/dist/chunk-QZ7VFGWC.mjs +6 -0
  9. package/dist/chunk-S5AGDSR2.mjs +8 -0
  10. package/dist/index.d.mts +6 -0
  11. package/dist/index.d.ts +6 -0
  12. package/dist/index.js +379 -0
  13. package/dist/index.mjs +26 -0
  14. package/dist/metafile-cjs.json +1 -0
  15. package/dist/metafile-esm.json +1 -0
  16. package/dist/modules/tabs.context.d.mts +12 -0
  17. package/dist/modules/tabs.context.d.ts +12 -0
  18. package/dist/modules/tabs.context.js +33 -0
  19. package/dist/modules/tabs.context.mjs +9 -0
  20. package/dist/modules/tabs.hooks.d.mts +56 -0
  21. package/dist/modules/tabs.hooks.d.ts +56 -0
  22. package/dist/modules/tabs.hooks.js +174 -0
  23. package/dist/modules/tabs.hooks.mjs +16 -0
  24. package/dist/modules/tabs.props.d.mts +62 -0
  25. package/dist/modules/tabs.props.d.ts +62 -0
  26. package/dist/modules/tabs.props.js +88 -0
  27. package/dist/modules/tabs.props.mjs +13 -0
  28. package/dist/tab-list.d.mts +5 -0
  29. package/dist/tab-list.d.ts +5 -0
  30. package/dist/tab-list.js +114 -0
  31. package/dist/tab-list.mjs +9 -0
  32. package/dist/tab-panel.d.mts +29 -0
  33. package/dist/tab-panel.d.ts +29 -0
  34. package/dist/tab-panel.js +89 -0
  35. package/dist/tab-panel.mjs +10 -0
  36. package/dist/tab-panels.d.mts +5 -0
  37. package/dist/tab-panels.d.ts +5 -0
  38. package/dist/tab-panels.js +81 -0
  39. package/dist/tab-panels.mjs +9 -0
  40. package/dist/tab.d.mts +29 -0
  41. package/dist/tab.d.ts +29 -0
  42. package/dist/tab.js +134 -0
  43. package/dist/tab.mjs +10 -0
  44. package/dist/tabs.d.mts +56 -0
  45. package/dist/tabs.d.ts +56 -0
  46. package/dist/tabs.js +123 -0
  47. package/dist/tabs.mjs +10 -0
  48. package/package.json +41 -0
@@ -0,0 +1,43 @@
1
+ import {
2
+ tabsProps
3
+ } from "./chunk-DKZ3Z2UI.mjs";
4
+ import {
5
+ useTabs
6
+ } from "./chunk-QVDBBOCQ.mjs";
7
+ import {
8
+ TabsProvider
9
+ } from "./chunk-S5AGDSR2.mjs";
10
+
11
+ // src/tabs.tsx
12
+ import { createVNode as _createVNode } from "vue";
13
+ import { defineComponent } from "vue";
14
+ import { toRefs } from "vue";
15
+ var MpTabs = defineComponent({
16
+ name: "MpTabs",
17
+ props: tabsProps,
18
+ emits: ["change", "update:modelValue"],
19
+ setup(props, {
20
+ slots,
21
+ emit
22
+ }) {
23
+ const {
24
+ rootAttrs,
25
+ selectedTab,
26
+ onChangeTab,
27
+ id
28
+ } = useTabs(props, emit);
29
+ TabsProvider({
30
+ selectedTab,
31
+ onChangeTab,
32
+ rootProps: toRefs(props),
33
+ id
34
+ });
35
+ return () => {
36
+ return _createVNode("div", rootAttrs.value, [slots.default()]);
37
+ };
38
+ }
39
+ });
40
+
41
+ export {
42
+ MpTabs
43
+ };
@@ -0,0 +1,29 @@
1
+ import {
2
+ tabPanelProps
3
+ } from "./chunk-DKZ3Z2UI.mjs";
4
+ import {
5
+ useTabPanel
6
+ } from "./chunk-QVDBBOCQ.mjs";
7
+
8
+ // src/tab-panel.tsx
9
+ import { createVNode as _createVNode, createTextVNode as _createTextVNode } from "vue";
10
+ import { defineComponent } from "vue";
11
+ var MpTabPanel = defineComponent({
12
+ name: "MpTabPanel",
13
+ props: tabPanelProps,
14
+ setup(props, {
15
+ slots
16
+ }) {
17
+ const {
18
+ rootAttrs
19
+ } = useTabPanel(props);
20
+ return () => {
21
+ const renderNode = _createVNode("div", rootAttrs.value, [_createTextVNode(" "), slots.default(), _createTextVNode(" ")]);
22
+ return props.isKeepAlive ? renderNode : props.isSelected ? renderNode : null;
23
+ };
24
+ }
25
+ });
26
+
27
+ export {
28
+ MpTabPanel
29
+ };
@@ -0,0 +1,61 @@
1
+ // src/modules/tabs.props.ts
2
+ var tabsProps = {
3
+ modelValue: {
4
+ type: Number
5
+ },
6
+ defaultValue: {
7
+ type: Number,
8
+ default: 0
9
+ },
10
+ id: {
11
+ type: String
12
+ },
13
+ isManual: {
14
+ type: Boolean
15
+ },
16
+ variantColor: {
17
+ type: String,
18
+ default: "blue"
19
+ },
20
+ isShowBorder: {
21
+ type: Boolean,
22
+ default: true
23
+ }
24
+ };
25
+ var tabProps = {
26
+ id: {
27
+ type: String
28
+ },
29
+ isSelected: {
30
+ type: Boolean,
31
+ default: false
32
+ },
33
+ value: {
34
+ type: String
35
+ }
36
+ };
37
+ var selectedBorderProps = {
38
+ isSelected: {
39
+ type: Boolean,
40
+ default: false
41
+ }
42
+ };
43
+ var tabPanelProps = {
44
+ isSelected: {
45
+ type: Boolean
46
+ },
47
+ value: {
48
+ type: String
49
+ },
50
+ isKeepAlive: {
51
+ type: Boolean,
52
+ default: true
53
+ }
54
+ };
55
+
56
+ export {
57
+ tabsProps,
58
+ tabProps,
59
+ selectedBorderProps,
60
+ tabPanelProps
61
+ };
@@ -0,0 +1,38 @@
1
+ import {
2
+ useTabList
3
+ } from "./chunk-QVDBBOCQ.mjs";
4
+
5
+ // src/tab-list.tsx
6
+ import { createVNode as _createVNode } from "vue";
7
+ import { defineComponent, cloneVNode } from "vue";
8
+ var MpTabList = defineComponent({
9
+ name: "MpTabList",
10
+ setup(props, {
11
+ slots
12
+ }) {
13
+ const {
14
+ rootAttrs,
15
+ tabListAttrs,
16
+ onChangeTab,
17
+ selectedTab
18
+ } = useTabList();
19
+ return () => {
20
+ const clones = slots.default().map((vnode, index) => {
21
+ const clone = cloneVNode(vnode, {
22
+ isSelected: selectedTab.value === index,
23
+ index,
24
+ "aria-selected": selectedTab.value === index,
25
+ onClick: () => {
26
+ onChangeTab(index);
27
+ }
28
+ });
29
+ return clone;
30
+ });
31
+ return _createVNode("div", rootAttrs, [_createVNode("div", tabListAttrs, [clones])]);
32
+ };
33
+ }
34
+ });
35
+
36
+ export {
37
+ MpTabList
38
+ };
@@ -0,0 +1,31 @@
1
+ import {
2
+ useTabPanels
3
+ } from "./chunk-QVDBBOCQ.mjs";
4
+
5
+ // src/tab-panels.tsx
6
+ import { createVNode as _createVNode } from "vue";
7
+ import { defineComponent, cloneVNode } from "vue";
8
+ var MpTabPanels = defineComponent({
9
+ name: "MpTabPanels",
10
+ setup(props, {
11
+ slots
12
+ }) {
13
+ const {
14
+ rootAttrs,
15
+ selectedTab
16
+ } = useTabPanels();
17
+ return () => {
18
+ const clones = slots.default().map((vnode, index) => {
19
+ const clone = cloneVNode(vnode, {
20
+ isSelected: selectedTab.value === index
21
+ });
22
+ return clone;
23
+ });
24
+ return _createVNode("div", rootAttrs.value, [clones]);
25
+ };
26
+ }
27
+ });
28
+
29
+ export {
30
+ MpTabPanels
31
+ };
@@ -0,0 +1,56 @@
1
+ import {
2
+ selectedBorderProps,
3
+ tabProps
4
+ } from "./chunk-DKZ3Z2UI.mjs";
5
+ import {
6
+ useTab
7
+ } from "./chunk-QVDBBOCQ.mjs";
8
+ import {
9
+ useTabsContext
10
+ } from "./chunk-S5AGDSR2.mjs";
11
+
12
+ // src/tab.tsx
13
+ import { createVNode as _createVNode } from "vue";
14
+ import { defineComponent, unref } from "vue";
15
+ import { selectedBorderRecipe } from "@mekari/pixel3-styled-system/recipes";
16
+ var MpTab = defineComponent({
17
+ name: "MpTab",
18
+ props: tabProps,
19
+ setup(props, {
20
+ slots,
21
+ attrs
22
+ }) {
23
+ const {
24
+ rootAttrs,
25
+ tabSelectedBorderAttrs
26
+ } = useTab(props, attrs);
27
+ return () => {
28
+ return _createVNode("button", rootAttrs.value, [slots.default(), _createVNode(MpTabSelectedBorder, tabSelectedBorderAttrs.value, null)]);
29
+ };
30
+ }
31
+ });
32
+ var MpTabSelectedBorder = defineComponent({
33
+ name: "MpTabSelectedBorder",
34
+ props: selectedBorderProps,
35
+ setup(props) {
36
+ const {
37
+ rootProps
38
+ } = useTabsContext();
39
+ const {
40
+ variantColor
41
+ } = rootProps;
42
+ return () => {
43
+ return _createVNode("div", {
44
+ "class": selectedBorderRecipe({
45
+ isSelected: props.isSelected,
46
+ variantColor: unref(variantColor)
47
+ }),
48
+ "data-pixel-component": "MpTabSelectedBorder"
49
+ }, null);
50
+ };
51
+ }
52
+ });
53
+
54
+ export {
55
+ MpTab
56
+ };
@@ -0,0 +1,146 @@
1
+ import {
2
+ useTabsContext
3
+ } from "./chunk-S5AGDSR2.mjs";
4
+ import {
5
+ __name
6
+ } from "./chunk-QZ7VFGWC.mjs";
7
+
8
+ // src/modules/tabs.hooks.ts
9
+ import { ref, computed, reactive, unref } from "vue";
10
+ import { css } from "@mekari/pixel3-styled-system/css";
11
+ import { tabListRecipe, tabRecipe } from "@mekari/pixel3-styled-system/recipes";
12
+ import { useId } from "@mekari/pixel3-utils";
13
+ function useTabs(props, emit) {
14
+ const selectedTab = ref(props.defaultValue);
15
+ const selected = props.isManual ? computed(() => props.modelValue) : selectedTab;
16
+ const id = computed(() => props.id || `tabs-${useId(4)}`);
17
+ const rootAttrs = computed(() => {
18
+ return {
19
+ "data-pixel-component": "MpTabs",
20
+ id: id.value
21
+ };
22
+ });
23
+ function onChangeTab(value) {
24
+ if (!props.isManual) {
25
+ selectedTab.value = value;
26
+ }
27
+ emit("change", value);
28
+ emit("update:modelValue", value);
29
+ }
30
+ __name(onChangeTab, "onChangeTab");
31
+ return {
32
+ selectedTab: selected,
33
+ onChangeTab,
34
+ rootAttrs,
35
+ id
36
+ };
37
+ }
38
+ __name(useTabs, "useTabs");
39
+ function useTabList() {
40
+ const {
41
+ rootProps,
42
+ onChangeTab,
43
+ selectedTab,
44
+ id
45
+ } = useTabsContext();
46
+ const {
47
+ isShowBorder
48
+ } = rootProps;
49
+ const rootAttrs = reactive({
50
+ "data-border": isShowBorder.value,
51
+ class: css({
52
+ position: "relative",
53
+ "&[data-border=true]": {
54
+ _before: {
55
+ content: '""',
56
+ height: "1px",
57
+ background: "gray.100",
58
+ position: "absolute",
59
+ right: 0,
60
+ left: 0,
61
+ bottom: "1px"
62
+ }
63
+ }
64
+ })
65
+ });
66
+ const tabListAttrs = reactive({
67
+ "data-pixel-component": "MpTabList",
68
+ class: tabListRecipe()
69
+ });
70
+ return {
71
+ tabsProps: rootProps,
72
+ onChangeTab,
73
+ selectedTab,
74
+ rootAttrs,
75
+ tabListAttrs,
76
+ tabsId: id
77
+ };
78
+ }
79
+ __name(useTabList, "useTabList");
80
+ function useTab(props, attrs) {
81
+ const {
82
+ rootProps,
83
+ id: tabsId
84
+ } = useTabsContext();
85
+ const {
86
+ variantColor
87
+ } = rootProps;
88
+ const rootAttrs = computed(() => {
89
+ return {
90
+ role: "tab",
91
+ "data-pixel-component": "MpTab",
92
+ class: ["group", tabRecipe({
93
+ isSelected: props.isSelected,
94
+ variantColor: unref(variantColor)
95
+ })],
96
+ id: props.id || `tab:${tabsId.value}-${attrs.index}`
97
+ };
98
+ });
99
+ const tabSelectedBorderAttrs = computed(() => {
100
+ return {
101
+ isSelected: props.isSelected
102
+ };
103
+ });
104
+ return {
105
+ rootAttrs,
106
+ tabSelectedBorderAttrs
107
+ };
108
+ }
109
+ __name(useTab, "useTab");
110
+ function useTabPanels() {
111
+ const {
112
+ selectedTab
113
+ } = useTabsContext();
114
+ const rootAttrs = computed(() => {
115
+ return {
116
+ "data-pixel-component": "MpTabPanels"
117
+ };
118
+ });
119
+ return {
120
+ rootAttrs,
121
+ selectedTab
122
+ };
123
+ }
124
+ __name(useTabPanels, "useTabPanels");
125
+ function useTabPanel(props) {
126
+ const rootAttrs = computed(() => {
127
+ return {
128
+ "data-pixel-component": "MpTabPanel",
129
+ style: {
130
+ display: props.isKeepAlive ? props.isSelected ? "unset" : "none" : ""
131
+ }
132
+ };
133
+ });
134
+ return {
135
+ rootAttrs
136
+ };
137
+ }
138
+ __name(useTabPanel, "useTabPanel");
139
+
140
+ export {
141
+ useTabs,
142
+ useTabList,
143
+ useTab,
144
+ useTabPanels,
145
+ useTabPanel
146
+ };
@@ -0,0 +1,6 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ export {
5
+ __name
6
+ };
@@ -0,0 +1,8 @@
1
+ // src/modules/tabs.context.ts
2
+ import { usePixelCreateContext } from "@mekari/pixel3-utils";
3
+ var [TabsProvider, useTabsContext] = usePixelCreateContext("TabsContext");
4
+
5
+ export {
6
+ TabsProvider,
7
+ useTabsContext
8
+ };
@@ -0,0 +1,6 @@
1
+ export { MpTabs } from './tabs.mjs';
2
+ export { MpTabList } from './tab-list.mjs';
3
+ export { MpTab } from './tab.mjs';
4
+ export { MpTabPanels } from './tab-panels.mjs';
5
+ export { MpTabPanel } from './tab-panel.mjs';
6
+ import 'vue';
@@ -0,0 +1,6 @@
1
+ export { MpTabs } from './tabs.js';
2
+ export { MpTabList } from './tab-list.js';
3
+ export { MpTab } from './tab.js';
4
+ export { MpTabPanels } from './tab-panels.js';
5
+ export { MpTabPanel } from './tab-panel.js';
6
+ import 'vue';