@cck-ui/core 0.23.0 → 0.25.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 (39) hide show
  1. package/cjs/components/divider/divider.cjs +434 -0
  2. package/cjs/components/divider/divider.cjs.map +1 -0
  3. package/cjs/components/divider/divider.module.cjs +10 -0
  4. package/cjs/components/divider/divider.module.cjs.map +1 -0
  5. package/cjs/components/divider/divider.utils.cjs +13 -0
  6. package/cjs/components/divider/divider.utils.cjs.map +1 -0
  7. package/cjs/components/divider/index.cjs +14 -0
  8. package/cjs/components/divider/index.cjs.map +1 -0
  9. package/cjs/components/portal/index.cjs +12 -0
  10. package/cjs/components/portal/index.cjs.map +1 -0
  11. package/cjs/components/portal/portal.cjs +116 -0
  12. package/cjs/components/portal/portal.cjs.map +1 -0
  13. package/cjs/index.cjs +69 -63
  14. package/cjs/index.cjs.map +1 -1
  15. package/esm/components/divider/divider.mjs +434 -0
  16. package/esm/components/divider/divider.mjs.map +1 -0
  17. package/esm/components/divider/divider.module.mjs +10 -0
  18. package/esm/components/divider/divider.module.mjs.map +1 -0
  19. package/esm/components/divider/divider.utils.mjs +14 -0
  20. package/esm/components/divider/divider.utils.mjs.map +1 -0
  21. package/esm/components/divider/index.mjs +11 -0
  22. package/esm/components/divider/index.mjs.map +1 -0
  23. package/esm/components/portal/index.mjs +9 -0
  24. package/esm/components/portal/index.mjs.map +1 -0
  25. package/esm/components/portal/portal.mjs +116 -0
  26. package/esm/components/portal/portal.mjs.map +1 -0
  27. package/esm/index.mjs +5 -1
  28. package/esm/index.mjs.map +1 -1
  29. package/lib/components/divider/divider.types.d.ts +28 -0
  30. package/lib/components/divider/divider.utils.d.ts +7 -0
  31. package/lib/components/divider/index.d.ts +6 -0
  32. package/lib/components/index.d.ts +2 -0
  33. package/lib/components/portal/index.d.ts +5 -0
  34. package/lib/components/portal/portal.types.d.ts +21 -0
  35. package/package.json +1 -1
  36. package/styles/divider.css +62 -0
  37. package/styles/divider.layer.css +63 -0
  38. package/styles.css +63 -0
  39. package/styles.layer.css +63 -0
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import { withInstall } from "../../core/utils/vue/install.mjs";
3
+ import { withExtend, withPropsFactory } from "../../core/utils/vue/statics.mjs";
4
+ import portal_default from "./portal.mjs";
5
+ const CPortal = withInstall(withPropsFactory(withExtend(portal_default)));
6
+ //#endregion
7
+ export { CPortal, CPortal as default };
8
+
9
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["Portal"],"sources":["../../../src/components/portal/index.ts"],"sourcesContent":["import { SFCWithInstall, withExtend, withInstall, withPropsFactory } from '../../core'\nimport Portal from './portal.vue'\n\nconst PortalWithStatic = withPropsFactory(withExtend(Portal))\n\nexport const CPortal: SFCWithInstall<typeof Portal> = withInstall(PortalWithStatic)\n\nexport default CPortal\n\nexport * from './portal.types'\n"],"mappings":";;;;AAKA,MAAa,UAAyC,YAF7B,iBAAiB,WAAWA,cAAM,CAEO,CAAgB"}
@@ -0,0 +1,116 @@
1
+ "use client";
2
+ import export_helper_default from "../../_virtual/_/plugin-vue/export-helper.mjs";
3
+ import { useComponentProps } from "../../core/config-provider/use-component-props/use-component-props.mjs";
4
+ import { Teleport, createBlock, createCommentVNode, defineComponent, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, useAttrs } from "vue";
5
+ //#region packages/@cck-ui/core/src/components/portal/portal.vue
6
+ const _sfc_main = /*@__PURE__*/ defineComponent({
7
+ name: "CPortal",
8
+ __name: "portal",
9
+ props: {
10
+ target: {
11
+ type: null,
12
+ required: false
13
+ },
14
+ reuseTargetNode: {
15
+ type: Boolean,
16
+ required: false
17
+ }
18
+ },
19
+ setup(__props, { expose: __expose }) {
20
+ const attrs = useAttrs();
21
+ const rawProps = __props;
22
+ const defaultProps = { reuseTargetNode: true };
23
+ const props = useComponentProps({
24
+ component: "CPortal",
25
+ defaultProps,
26
+ props: rawProps
27
+ });
28
+ const container = ref(null);
29
+ let createdNode = null;
30
+ function createPortalNode(nodeAttrs) {
31
+ const node = document.createElement("div");
32
+ node.setAttribute("data-portal", "true");
33
+ const className = nodeAttrs.class || nodeAttrs.className;
34
+ if (className) node.classList.add(...String(className).split(" ").filter(Boolean));
35
+ if (nodeAttrs.style) Object.assign(node.style, nodeAttrs.style);
36
+ if (nodeAttrs.id) node.setAttribute("id", nodeAttrs.id);
37
+ Object.keys(nodeAttrs).forEach((key) => {
38
+ if (![
39
+ "class",
40
+ "className",
41
+ "style",
42
+ "id"
43
+ ].includes(key)) node.setAttribute(key, nodeAttrs[key]);
44
+ });
45
+ return node;
46
+ }
47
+ function getTargetNode() {
48
+ const target = props.value.target;
49
+ const reuseTargetNode = props.value.reuseTargetNode;
50
+ if (target) {
51
+ if (typeof target === "string") {
52
+ const found = document.querySelector(target);
53
+ if (found) return found;
54
+ const node = createPortalNode(attrs);
55
+ document.body.appendChild(node);
56
+ createdNode = node;
57
+ return node;
58
+ }
59
+ return target;
60
+ }
61
+ if (reuseTargetNode) {
62
+ const existing = document.querySelector("[data-cck-shared-portal]");
63
+ if (existing) return existing;
64
+ const node = createPortalNode(attrs);
65
+ node.setAttribute("data-cck-shared-portal", "true");
66
+ document.body.appendChild(node);
67
+ createdNode = node;
68
+ return node;
69
+ }
70
+ const node = createPortalNode(attrs);
71
+ document.body.appendChild(node);
72
+ createdNode = node;
73
+ return node;
74
+ }
75
+ onMounted(() => {
76
+ container.value = getTargetNode();
77
+ });
78
+ onBeforeUnmount(() => {
79
+ if (createdNode && !createdNode.hasAttribute("data-cck-shared-portal")) {
80
+ if (createdNode.parentNode) createdNode.parentNode.removeChild(createdNode);
81
+ }
82
+ });
83
+ __expose({ root: container });
84
+ const __returned__ = {
85
+ attrs,
86
+ rawProps,
87
+ defaultProps,
88
+ props,
89
+ container,
90
+ get createdNode() {
91
+ return createdNode;
92
+ },
93
+ set createdNode(v) {
94
+ createdNode = v;
95
+ },
96
+ createPortalNode,
97
+ getTargetNode
98
+ };
99
+ Object.defineProperty(__returned__, "__isScriptSetup", {
100
+ enumerable: false,
101
+ value: true
102
+ });
103
+ return __returned__;
104
+ }
105
+ });
106
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
107
+ return $setup.container ? (openBlock(), createBlock(Teleport, {
108
+ key: 0,
109
+ to: $setup.container
110
+ }, [renderSlot(_ctx.$slots, "default")], 8, ["to"])) : createCommentVNode("v-if", true);
111
+ }
112
+ var portal_default = /*#__PURE__*/ export_helper_default(_sfc_main, [["render", _sfc_render], ["__file", "/home/runner/work/cck-ui/cck-ui/packages/@cck-ui/core/src/components/portal/portal.vue"]]);
113
+ //#endregion
114
+ export { portal_default as default };
115
+
116
+ //# sourceMappingURL=portal.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal.mjs","names":[],"sources":["../../../src/components/portal/portal.vue"],"sourcesContent":["<template>\n <Teleport v-if=\"container\" :to=\"container\">\n <slot />\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { onBeforeUnmount, onMounted, ref, useAttrs } from 'vue'\nimport { PortalProps } from './portal.types'\nimport { useComponentProps } from '../../core'\n\ndefineOptions({\n name: 'CPortal',\n})\n\nconst attrs = useAttrs()\n\nconst rawProps = defineProps<PortalProps>()\n\nconst defaultProps = {\n reuseTargetNode: true,\n} satisfies Partial<PortalProps>\n\nconst props = useComponentProps({\n component: 'CPortal',\n defaultProps,\n props: rawProps,\n})\n\nconst container = ref<HTMLElement | null>(null)\nlet createdNode: HTMLElement | null = null\n\nfunction createPortalNode(nodeAttrs: Record<string, any>): HTMLElement {\n const node = document.createElement('div')\n node.setAttribute('data-portal', 'true')\n\n const className = nodeAttrs.class || nodeAttrs.className\n if (className) {\n node.classList.add(...String(className).split(' ').filter(Boolean))\n }\n if (nodeAttrs.style) {\n Object.assign(node.style, nodeAttrs.style)\n }\n if (nodeAttrs.id) {\n node.setAttribute('id', nodeAttrs.id)\n }\n Object.keys(nodeAttrs).forEach((key) => {\n if (!['class', 'className', 'style', 'id'].includes(key)) {\n node.setAttribute(key, nodeAttrs[key])\n }\n })\n\n return node\n}\n\nfunction getTargetNode(): HTMLElement {\n const target = props.value.target\n const reuseTargetNode = props.value.reuseTargetNode\n\n if (target) {\n if (typeof target === 'string') {\n const found = document.querySelector<HTMLElement>(target)\n if (found) {\n return found\n }\n const node = createPortalNode(attrs)\n document.body.appendChild(node)\n createdNode = node\n return node\n }\n return target\n }\n\n if (reuseTargetNode) {\n const existing = document.querySelector<HTMLElement>('[data-cck-shared-portal]')\n if (existing) {\n return existing\n }\n const node = createPortalNode(attrs)\n node.setAttribute('data-cck-shared-portal', 'true')\n document.body.appendChild(node)\n createdNode = node\n return node\n }\n\n const node = createPortalNode(attrs)\n document.body.appendChild(node)\n createdNode = node\n return node\n}\n\nonMounted(() => {\n container.value = getTargetNode()\n})\n\nonBeforeUnmount(() => {\n if (createdNode && !createdNode.hasAttribute('data-cck-shared-portal')) {\n if (createdNode.parentNode) {\n createdNode.parentNode.removeChild(createdNode)\n }\n }\n})\n\ndefineExpose({\n root: container,\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAeA,MAAM,QAAQ,SAAS;EAEvB,MAAM,WAAW;EAEjB,MAAM,eAAe,EACnB,iBAAiB,KACnB;EAEA,MAAM,QAAQ,kBAAkB;GAC9B,WAAW;GACX;GACA,OAAO;EACT,CAAC;EAED,MAAM,YAAY,IAAwB,IAAI;EAC9C,IAAI,cAAkC;EAEtC,SAAS,iBAAiB,WAA6C;GACrE,MAAM,OAAO,SAAS,cAAc,KAAK;GACzC,KAAK,aAAa,eAAe,MAAM;GAEvC,MAAM,YAAY,UAAU,SAAS,UAAU;GAC/C,IAAI,WACF,KAAK,UAAU,IAAI,GAAG,OAAO,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO,CAAC;GAEpE,IAAI,UAAU,OACZ,OAAO,OAAO,KAAK,OAAO,UAAU,KAAK;GAE3C,IAAI,UAAU,IACZ,KAAK,aAAa,MAAM,UAAU,EAAE;GAEtC,OAAO,KAAK,SAAS,CAAC,CAAC,SAAS,QAAQ;IACtC,IAAI,CAAC;KAAC;KAAS;KAAa;KAAS;IAAI,CAAC,CAAC,SAAS,GAAG,GACrD,KAAK,aAAa,KAAK,UAAU,IAAI;GAEzC,CAAC;GAED,OAAO;EACT;EAEA,SAAS,gBAA6B;GACpC,MAAM,SAAS,MAAM,MAAM;GAC3B,MAAM,kBAAkB,MAAM,MAAM;GAEpC,IAAI,QAAQ;IACV,IAAI,OAAO,WAAW,UAAU;KAC9B,MAAM,QAAQ,SAAS,cAA2B,MAAM;KACxD,IAAI,OACF,OAAO;KAET,MAAM,OAAO,iBAAiB,KAAK;KACnC,SAAS,KAAK,YAAY,IAAI;KAC9B,cAAc;KACd,OAAO;IACT;IACA,OAAO;GACT;GAEA,IAAI,iBAAiB;IACnB,MAAM,WAAW,SAAS,cAA2B,0BAA0B;IAC/E,IAAI,UACF,OAAO;IAET,MAAM,OAAO,iBAAiB,KAAK;IACnC,KAAK,aAAa,0BAA0B,MAAM;IAClD,SAAS,KAAK,YAAY,IAAI;IAC9B,cAAc;IACd,OAAO;GACT;GAEA,MAAM,OAAO,iBAAiB,KAAK;GACnC,SAAS,KAAK,YAAY,IAAI;GAC9B,cAAc;GACd,OAAO;EACT;EAEA,gBAAgB;GACd,UAAU,QAAQ,cAAc;EAClC,CAAC;EAED,sBAAsB;GACpB,IAAI,eAAe,CAAC,YAAY,aAAa,wBAAwB;QAC/D,YAAY,YACd,YAAY,WAAW,YAAY,WAAW;GAAA;EAGpD,CAAC;EAED,SAAa,EACX,MAAM,UACR,CAAC;;;;;;;;;;;;;;;;;;;;;;;;QAxGiB,OAAA,aAAA,UAAA,GAAhB,YAEW,UAAA;;EAFiB,IAAI,OAAA;KAC9B,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,GAAA,CAAA,IAAA,CAAA,KAAA,mBAAA,QAAA,IAAA"}
package/esm/index.mjs CHANGED
@@ -63,6 +63,7 @@ import { CButton, CButtonGroup, CButtonGroupSection } from "./components/button/
63
63
  import { CCenter } from "./components/center/index.mjs";
64
64
  import { CContainer } from "./components/container/index.mjs";
65
65
  import { CCopyButton } from "./components/copy-button/index.mjs";
66
+ import { CDivider } from "./components/divider/index.mjs";
66
67
  import { CEmptyState, CEmptyStateActions, CEmptyStateDescription, CEmptyStateIndicator, CEmptyStateTitle } from "./components/empty-state/index.mjs";
67
68
  import { CFileButton } from "./components/file-button/index.mjs";
68
69
  import { CFlex } from "./components/flex/index.mjs";
@@ -71,6 +72,7 @@ import { CCol, CGrid } from "./components/grid/index.mjs";
71
72
  import { CGroup } from "./components/group/index.mjs";
72
73
  import { CImage } from "./components/image/index.mjs";
73
74
  import { CPaper } from "./components/paper/index.mjs";
75
+ import { CPortal } from "./components/portal/index.mjs";
74
76
  import { CSemiCircleProgress } from "./components/semi-circle-progress/index.mjs";
75
77
  import { CSimpleGrid } from "./components/simple-grid/index.mjs";
76
78
  import { CSkeleton } from "./components/skeleton/index.mjs";
@@ -98,6 +100,7 @@ const components = [
98
100
  CCol,
99
101
  CContainer,
100
102
  CCopyButton,
103
+ CDivider,
101
104
  CEmptyState,
102
105
  CEmptyStateActions,
103
106
  CEmptyStateDescription,
@@ -111,6 +114,7 @@ const components = [
111
114
  CImage,
112
115
  CLoader,
113
116
  CPaper,
117
+ CPortal,
114
118
  CSemiCircleProgress,
115
119
  CSimpleGrid,
116
120
  CSkeleton,
@@ -132,6 +136,6 @@ const CckUI = { install(app) {
132
136
  });
133
137
  } };
134
138
  //#endregion
135
- export { CActionIcon, CActionIconGroup, CActionIconGroupSection, CAlert, CAspectRatio, CBox, CButton, CButtonGroup, CButtonGroupSection, transitions as CCK_TRANSITIONS, CCenter, CCloseButton, CCol, CContainer, CCopyButton, CDefaultLoaders, CEmptyState, CEmptyStateActions, CEmptyStateDescription, CEmptyStateIndicator, CEmptyStateTitle, CFileButton, CFlex, CFocusTrap, CGrid, CGroup, CImage, CLoader, CONFIG_KEY, CPaper, CSemiCircleProgress, CSimpleGrid, CSkeleton, CSpace, CSplitter, CSplitterPane, CStack, CText, CTransition, CTypography, CVisuallyHidden, CckConfigProvider, CckUI, CckUI as default, DEFAULT_THEME, FOCUS_CLASS_NAMES, STYLE_PROPS_DATA, THEME_KEY, UnstyledButton, alpha, camelToKebabCase, colorsTuple, createTheme, createVarsResolver, darken, deepMerge, defaultCssVariablesResolver, defaultVariantColorsResolver, em, extractStyleProps, filterProps, getBaseValue, getBreakpointValue, getCSSColorVariables, getComponentName, getFontSize, getGradient, getLineHeight, getPrimaryShade, getRadius, getShadow, getSize, getSortedBreakpoints, getSpacing, getThemeColor, getTransitionProps, hashStyleProps, isLightColor, isNumber, isNumberLike, isString, isStringNumber, isUndefined, isVirtualColor, keys, luminance, mergeThemeOverrides, normalizeNumberLikeStringProp, numberLikeStringToNumber, parseStyleProps, parseThemeColor, px, rem, resolveClassNames, resolveStyles, responsiveStyleManager, rgb, rgba, stylesToString, toRgba, useCckClassNamesPrefix, useCckColorScheme, useCckCssVariablesResolver, useCckEnv, useCckIsHeadless, useCckStyleNonce, useCckStylesTransform, useCckSxTransform, useCckTheme, useCckWithStaticClasses, useComponentProps, useConfigContext, useProviderColorScheme, useRandomClassName, useStyles, virtualColor, withClasses, withExtend, withInstall, withPropsDefaultSetter, withPropsFactory, withVarsResolver };
139
+ export { CActionIcon, CActionIconGroup, CActionIconGroupSection, CAlert, CAspectRatio, CBox, CButton, CButtonGroup, CButtonGroupSection, transitions as CCK_TRANSITIONS, CCenter, CCloseButton, CCol, CContainer, CCopyButton, CDefaultLoaders, CDivider, CEmptyState, CEmptyStateActions, CEmptyStateDescription, CEmptyStateIndicator, CEmptyStateTitle, CFileButton, CFlex, CFocusTrap, CGrid, CGroup, CImage, CLoader, CONFIG_KEY, CPaper, CPortal, CSemiCircleProgress, CSimpleGrid, CSkeleton, CSpace, CSplitter, CSplitterPane, CStack, CText, CTransition, CTypography, CVisuallyHidden, CckConfigProvider, CckUI, CckUI as default, DEFAULT_THEME, FOCUS_CLASS_NAMES, STYLE_PROPS_DATA, THEME_KEY, UnstyledButton, alpha, camelToKebabCase, colorsTuple, createTheme, createVarsResolver, darken, deepMerge, defaultCssVariablesResolver, defaultVariantColorsResolver, em, extractStyleProps, filterProps, getBaseValue, getBreakpointValue, getCSSColorVariables, getComponentName, getFontSize, getGradient, getLineHeight, getPrimaryShade, getRadius, getShadow, getSize, getSortedBreakpoints, getSpacing, getThemeColor, getTransitionProps, hashStyleProps, isLightColor, isNumber, isNumberLike, isString, isStringNumber, isUndefined, isVirtualColor, keys, luminance, mergeThemeOverrides, normalizeNumberLikeStringProp, numberLikeStringToNumber, parseStyleProps, parseThemeColor, px, rem, resolveClassNames, resolveStyles, responsiveStyleManager, rgb, rgba, stylesToString, toRgba, useCckClassNamesPrefix, useCckColorScheme, useCckCssVariablesResolver, useCckEnv, useCckIsHeadless, useCckStyleNonce, useCckStylesTransform, useCckSxTransform, useCckTheme, useCckWithStaticClasses, useComponentProps, useConfigContext, useProviderColorScheme, useRandomClassName, useStyles, virtualColor, withClasses, withExtend, withInstall, withPropsDefaultSetter, withPropsFactory, withVarsResolver };
136
140
 
137
141
  //# sourceMappingURL=index.mjs.map
package/esm/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { App, Plugin } from 'vue'\nimport {\n CActionIcon,\n CActionIconGroup,\n CActionIconGroupSection,\n CAlert,\n CAspectRatio,\n CButton,\n CButtonGroup,\n CButtonGroupSection,\n CCenter,\n CCloseButton,\n CCol,\n CContainer,\n CCopyButton,\n CEmptyState,\n CEmptyStateActions,\n CEmptyStateDescription,\n CEmptyStateIndicator,\n CEmptyStateTitle,\n CFileButton,\n CFlex,\n CFocusTrap,\n CGrid,\n CGroup,\n CImage,\n CLoader,\n CPaper,\n CSemiCircleProgress,\n CSimpleGrid,\n CSkeleton,\n CSpace,\n CSplitter,\n CSplitterPane,\n CStack,\n CText,\n CTransition,\n CTypography,\n CVisuallyHidden,\n UnstyledButton,\n} from './components'\nimport { CckConfigProvider, CBox } from './core'\n\nconst INSTALLED_KEY = Symbol('INSTALLED_KEY')\n\nconst components = [\n CckConfigProvider,\n CBox,\n CActionIcon,\n CActionIconGroup,\n CActionIconGroupSection,\n CAlert,\n CAspectRatio,\n CButton,\n CButtonGroup,\n CButtonGroupSection,\n CCenter,\n CCloseButton,\n CCol,\n CContainer,\n CCopyButton,\n CEmptyState,\n CEmptyStateActions,\n CEmptyStateDescription,\n CEmptyStateIndicator,\n CEmptyStateTitle,\n CFileButton,\n CFlex,\n CFocusTrap,\n CGrid,\n CGroup,\n CImage,\n CLoader,\n CPaper,\n CSemiCircleProgress,\n CSimpleGrid,\n CSkeleton,\n CSpace,\n CSplitter,\n CSplitterPane,\n CStack,\n CText,\n CTransition,\n CTypography,\n CVisuallyHidden,\n UnstyledButton,\n]\n\nconst CckUI: Plugin = {\n install(app: App) {\n if ((app as any)[INSTALLED_KEY]) {\n return\n }\n ;(app as any)[INSTALLED_KEY] = true\n components.forEach((c) => {\n if (c.name) {\n app.component(c.name, c)\n }\n })\n },\n}\n\nexport default CckUI\nexport { CckUI }\n\nexport * from './components'\nexport * from './core'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,MAAM,gBAAgB,OAAO,eAAe;AAE5C,MAAM,aAAa;CACjB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,MAAM,QAAgB,EACpB,QAAQ,KAAU;CAChB,IAAK,IAAY,gBACf;CAED,IAAa,iBAAiB;CAC/B,WAAW,SAAS,MAAM;EACxB,IAAI,EAAE,MACJ,IAAI,UAAU,EAAE,MAAM,CAAC;CAE3B,CAAC;AACH,EACF"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { App, Plugin } from 'vue'\nimport {\n CActionIcon,\n CActionIconGroup,\n CActionIconGroupSection,\n CAlert,\n CAspectRatio,\n CButton,\n CButtonGroup,\n CButtonGroupSection,\n CCenter,\n CCloseButton,\n CCol,\n CContainer,\n CCopyButton,\n CDivider,\n CEmptyState,\n CEmptyStateActions,\n CEmptyStateDescription,\n CEmptyStateIndicator,\n CEmptyStateTitle,\n CFileButton,\n CFlex,\n CFocusTrap,\n CGrid,\n CGroup,\n CImage,\n CLoader,\n CPaper,\n CPortal,\n CSemiCircleProgress,\n CSimpleGrid,\n CSkeleton,\n CSpace,\n CSplitter,\n CSplitterPane,\n CStack,\n CText,\n CTransition,\n CTypography,\n CVisuallyHidden,\n UnstyledButton,\n} from './components'\nimport { CckConfigProvider, CBox } from './core'\n\nconst INSTALLED_KEY = Symbol('INSTALLED_KEY')\n\nconst components = [\n CckConfigProvider,\n CBox,\n CActionIcon,\n CActionIconGroup,\n CActionIconGroupSection,\n CAlert,\n CAspectRatio,\n CButton,\n CButtonGroup,\n CButtonGroupSection,\n CCenter,\n CCloseButton,\n CCol,\n CContainer,\n CCopyButton,\n CDivider,\n CEmptyState,\n CEmptyStateActions,\n CEmptyStateDescription,\n CEmptyStateIndicator,\n CEmptyStateTitle,\n CFileButton,\n CFlex,\n CFocusTrap,\n CGrid,\n CGroup,\n CImage,\n CLoader,\n CPaper,\n CPortal,\n CSemiCircleProgress,\n CSimpleGrid,\n CSkeleton,\n CSpace,\n CSplitter,\n CSplitterPane,\n CStack,\n CText,\n CTransition,\n CTypography,\n CVisuallyHidden,\n UnstyledButton,\n]\n\nconst CckUI: Plugin = {\n install(app: App) {\n if ((app as any)[INSTALLED_KEY]) {\n return\n }\n ;(app as any)[INSTALLED_KEY] = true\n components.forEach((c) => {\n if (c.name) {\n app.component(c.name, c)\n }\n })\n },\n}\n\nexport default CckUI\nexport { CckUI }\n\nexport * from './components'\nexport * from './core'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,MAAM,gBAAgB,OAAO,eAAe;AAE5C,MAAM,aAAa;CACjB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,MAAM,QAAgB,EACpB,QAAQ,KAAU;CAChB,IAAK,IAAY,gBACf;CAED,IAAa,iBAAiB;CAC/B,WAAW,SAAS,MAAM;EACxB,IAAI,EAAE,MACJ,IAAI,UAAU,EAAE,MAAM,CAAC;CAE3B,CAAC;AACH,EACF"}
@@ -0,0 +1,28 @@
1
+ import { BoxProps, CColor, CSize, ElementProps, Factory, StylesApiProps } from '../../core';
2
+ export type DividerStylesNames = 'root' | 'label';
3
+ export type DividerVariant = 'solid' | 'dashed' | 'dotted';
4
+ export type DividerCssVariables = {
5
+ root: '--divider-color' | '--divider-border-style' | '--divider-size';
6
+ };
7
+ export interface DividerProps extends BoxProps, StylesApiProps<DividerFactory>, /* @vue-ignore */ ElementProps<'div'> {
8
+ /** Key of `theme.colors` or any valid CSS color value */
9
+ color?: CColor;
10
+ /**
11
+ * Controls width/height (depends on orientation)
12
+ * @default 'xs'
13
+ */
14
+ size?: CSize | number | (string & {});
15
+ /**
16
+ * label position
17
+ * @default 'center'
18
+ */
19
+ labelPosition?: 'left' | 'center' | 'right';
20
+ orientation?: 'horizontal' | 'vertical';
21
+ }
22
+ export type DividerFactory = Factory<{
23
+ props: DividerProps;
24
+ ref: HTMLDivElement;
25
+ stylesNames: DividerStylesNames;
26
+ vars: DividerCssVariables;
27
+ variant: DividerVariant;
28
+ }>;
@@ -0,0 +1,7 @@
1
+ export declare const varsResolver: import("../..").VarsResolver<{
2
+ props: import("./divider.types").DividerProps;
3
+ ref: HTMLDivElement;
4
+ stylesNames: import("./divider.types").DividerStylesNames;
5
+ vars: import("./divider.types").DividerCssVariables;
6
+ variant: import("./divider.types").DividerVariant;
7
+ }>;
@@ -0,0 +1,6 @@
1
+ import { SFCWithInstallAndClasses } from '../../core';
2
+ import classes from './divider.module.css';
3
+ import Divider from './divider.vue';
4
+ export declare const CDivider: SFCWithInstallAndClasses<typeof Divider, typeof classes>;
5
+ export default CDivider;
6
+ export * from './divider.types';
@@ -6,6 +6,7 @@ export * from './center';
6
6
  export * from './close-button';
7
7
  export * from './container';
8
8
  export * from './copy-button';
9
+ export * from './divider';
9
10
  export * from './empty-state';
10
11
  export * from './file-button';
11
12
  export * from './flex';
@@ -15,6 +16,7 @@ export * from './group';
15
16
  export * from './image';
16
17
  export * from './loader';
17
18
  export * from './paper';
19
+ export * from './portal';
18
20
  export * from './semi-circle-progress';
19
21
  export * from './simple-grid';
20
22
  export * from './skeleton';
@@ -0,0 +1,5 @@
1
+ import { SFCWithInstall } from '../../core';
2
+ import Portal from './portal.vue';
3
+ export declare const CPortal: SFCWithInstall<typeof Portal>;
4
+ export default CPortal;
5
+ export * from './portal.types';
@@ -0,0 +1,21 @@
1
+ export interface PortalProps {
2
+ /**
3
+ * Target element where portal should be rendered. Accepts:
4
+ * - HTMLElement: Renders portal inside this element
5
+ * - string: CSS selector - renders inside first matching element
6
+ * - undefined: Uses shared portal node or creates new on based on `reuseTargetNode`
7
+ *
8
+ * Note: If selector doesn't match any element, portal will not render
9
+ */
10
+ target?: HTMLElement | string;
11
+ /**
12
+ * When true and target is not specified, all Portal instances share a single
13
+ * container node appended to document.body. When false, each Portal creates
14
+ * its own container node.
15
+ *
16
+ * Has no effect when target is specified.
17
+ *
18
+ * @default true
19
+ */
20
+ reuseTargetNode?: boolean;
21
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cck-ui/core",
3
- "version": "0.23.0",
3
+ "version": "0.25.0",
4
4
  "description": "Vue component library focused on usability, accessibility and developer experience",
5
5
  "homepage": "https://cck-ui.jackatlas.xyz",
6
6
  "license": "ISC",
@@ -0,0 +1,62 @@
1
+ .m_35209716 {
2
+ --divider-size-xs: calc(0.0625rem * var(--c-scale));
3
+ --divider-size-sm: calc(0.125rem * var(--c-scale));
4
+ --divider-size-md: calc(0.1875rem * var(--c-scale));
5
+ --divider-size-lg: calc(0.25rem * var(--c-scale));
6
+ --divider-size-xl: calc(0.3125rem * var(--c-scale));
7
+ --divider-size: var(--divider-size-xs);
8
+ }
9
+
10
+ :where([data-c-color-scheme='light']) .m_35209716 {
11
+ --divider-color: var(--c-color-gray-3);
12
+ }
13
+
14
+ :where([data-c-color-scheme='dark']) .m_35209716 {
15
+ --divider-color: var(--c-color-dark-4);
16
+ }
17
+
18
+ .m_35209716:where([data-orientation='horizontal']) {
19
+ border-top: var(--divider-size) var(--divider-border-style, solid) var(--divider-color);
20
+ }
21
+
22
+ .m_35209716:where([data-orientation='vertical']) {
23
+ border-inline-start: var(--divider-size) var(--divider-border-style, solid) var(--divider-color);
24
+ height: auto;
25
+ align-self: stretch;
26
+ }
27
+
28
+ .m_35209716:where([data-with-label]) {
29
+ border: 0;
30
+ }
31
+
32
+ .m_6e972f40 {
33
+ display: flex;
34
+ align-items: center;
35
+ font-size: var(--c-font-size-xs);
36
+ color: var(--c-color-dimmed);
37
+ white-space: nowrap;
38
+ }
39
+
40
+ .m_6e972f40:where([data-position='left'])::before {
41
+ display: none;
42
+ }
43
+
44
+ .m_6e972f40:where([data-position='right'])::after {
45
+ display: none;
46
+ }
47
+
48
+ .m_6e972f40::before {
49
+ content: '';
50
+ flex: 1;
51
+ height: calc(0.0625rem * var(--c-scale));
52
+ border-top: var(--divider-size) var(--divider-border-style, solid) var(--divider-color);
53
+ margin-inline-end: var(--c-spacing-xs);
54
+ }
55
+
56
+ .m_6e972f40::after {
57
+ content: '';
58
+ flex: 1;
59
+ height: calc(0.0625rem * var(--c-scale));
60
+ border-top: var(--divider-size) var(--divider-border-style, solid) var(--divider-color);
61
+ margin-inline-start: var(--c-spacing-xs);
62
+ }
@@ -0,0 +1,63 @@
1
+ @layer cck {.m_35209716 {
2
+ --divider-size-xs: calc(0.0625rem * var(--c-scale));
3
+ --divider-size-sm: calc(0.125rem * var(--c-scale));
4
+ --divider-size-md: calc(0.1875rem * var(--c-scale));
5
+ --divider-size-lg: calc(0.25rem * var(--c-scale));
6
+ --divider-size-xl: calc(0.3125rem * var(--c-scale));
7
+ --divider-size: var(--divider-size-xs);
8
+ }
9
+
10
+ :where([data-c-color-scheme='light']) .m_35209716 {
11
+ --divider-color: var(--c-color-gray-3);
12
+ }
13
+
14
+ :where([data-c-color-scheme='dark']) .m_35209716 {
15
+ --divider-color: var(--c-color-dark-4);
16
+ }
17
+
18
+ .m_35209716:where([data-orientation='horizontal']) {
19
+ border-top: var(--divider-size) var(--divider-border-style, solid) var(--divider-color);
20
+ }
21
+
22
+ .m_35209716:where([data-orientation='vertical']) {
23
+ border-inline-start: var(--divider-size) var(--divider-border-style, solid) var(--divider-color);
24
+ height: auto;
25
+ align-self: stretch;
26
+ }
27
+
28
+ .m_35209716:where([data-with-label]) {
29
+ border: 0;
30
+ }
31
+
32
+ .m_6e972f40 {
33
+ display: flex;
34
+ align-items: center;
35
+ font-size: var(--c-font-size-xs);
36
+ color: var(--c-color-dimmed);
37
+ white-space: nowrap;
38
+ }
39
+
40
+ .m_6e972f40:where([data-position='left'])::before {
41
+ display: none;
42
+ }
43
+
44
+ .m_6e972f40:where([data-position='right'])::after {
45
+ display: none;
46
+ }
47
+
48
+ .m_6e972f40::before {
49
+ content: '';
50
+ flex: 1;
51
+ height: calc(0.0625rem * var(--c-scale));
52
+ border-top: var(--divider-size) var(--divider-border-style, solid) var(--divider-color);
53
+ margin-inline-end: var(--c-spacing-xs);
54
+ }
55
+
56
+ .m_6e972f40::after {
57
+ content: '';
58
+ flex: 1;
59
+ height: calc(0.0625rem * var(--c-scale));
60
+ border-top: var(--divider-size) var(--divider-border-style, solid) var(--divider-color);
61
+ margin-inline-start: var(--c-spacing-xs);
62
+ }
63
+ }
package/styles.css CHANGED
@@ -1276,6 +1276,69 @@ fieldset:disabled .c-active:active {
1276
1276
  margin-inline: auto;
1277
1277
  }
1278
1278
 
1279
+ .m_35209716 {
1280
+ --divider-size-xs: calc(0.0625rem * var(--c-scale));
1281
+ --divider-size-sm: calc(0.125rem * var(--c-scale));
1282
+ --divider-size-md: calc(0.1875rem * var(--c-scale));
1283
+ --divider-size-lg: calc(0.25rem * var(--c-scale));
1284
+ --divider-size-xl: calc(0.3125rem * var(--c-scale));
1285
+ --divider-size: var(--divider-size-xs);
1286
+ }
1287
+
1288
+ :where([data-c-color-scheme='light']) .m_35209716 {
1289
+ --divider-color: var(--c-color-gray-3);
1290
+ }
1291
+
1292
+ :where([data-c-color-scheme='dark']) .m_35209716 {
1293
+ --divider-color: var(--c-color-dark-4);
1294
+ }
1295
+
1296
+ .m_35209716:where([data-orientation='horizontal']) {
1297
+ border-top: var(--divider-size) var(--divider-border-style, solid) var(--divider-color);
1298
+ }
1299
+
1300
+ .m_35209716:where([data-orientation='vertical']) {
1301
+ border-inline-start: var(--divider-size) var(--divider-border-style, solid) var(--divider-color);
1302
+ height: auto;
1303
+ align-self: stretch;
1304
+ }
1305
+
1306
+ .m_35209716:where([data-with-label]) {
1307
+ border: 0;
1308
+ }
1309
+
1310
+ .m_6e972f40 {
1311
+ display: flex;
1312
+ align-items: center;
1313
+ font-size: var(--c-font-size-xs);
1314
+ color: var(--c-color-dimmed);
1315
+ white-space: nowrap;
1316
+ }
1317
+
1318
+ .m_6e972f40:where([data-position='left'])::before {
1319
+ display: none;
1320
+ }
1321
+
1322
+ .m_6e972f40:where([data-position='right'])::after {
1323
+ display: none;
1324
+ }
1325
+
1326
+ .m_6e972f40::before {
1327
+ content: '';
1328
+ flex: 1;
1329
+ height: calc(0.0625rem * var(--c-scale));
1330
+ border-top: var(--divider-size) var(--divider-border-style, solid) var(--divider-color);
1331
+ margin-inline-end: var(--c-spacing-xs);
1332
+ }
1333
+
1334
+ .m_6e972f40::after {
1335
+ content: '';
1336
+ flex: 1;
1337
+ height: calc(0.0625rem * var(--c-scale));
1338
+ border-top: var(--divider-size) var(--divider-border-style, solid) var(--divider-color);
1339
+ margin-inline-start: var(--c-spacing-xs);
1340
+ }
1341
+
1279
1342
  .m_6438951e {
1280
1343
  --empty-state-indicator-size-xs: calc(2rem * var(--c-scale));
1281
1344
  --empty-state-indicator-size-sm: calc(2.5rem * var(--c-scale));
package/styles.layer.css CHANGED
@@ -1276,6 +1276,69 @@ fieldset:disabled .c-active:active {
1276
1276
  margin-inline: auto;
1277
1277
  }
1278
1278
 
1279
+ .m_35209716 {
1280
+ --divider-size-xs: calc(0.0625rem * var(--c-scale));
1281
+ --divider-size-sm: calc(0.125rem * var(--c-scale));
1282
+ --divider-size-md: calc(0.1875rem * var(--c-scale));
1283
+ --divider-size-lg: calc(0.25rem * var(--c-scale));
1284
+ --divider-size-xl: calc(0.3125rem * var(--c-scale));
1285
+ --divider-size: var(--divider-size-xs);
1286
+ }
1287
+
1288
+ :where([data-c-color-scheme='light']) .m_35209716 {
1289
+ --divider-color: var(--c-color-gray-3);
1290
+ }
1291
+
1292
+ :where([data-c-color-scheme='dark']) .m_35209716 {
1293
+ --divider-color: var(--c-color-dark-4);
1294
+ }
1295
+
1296
+ .m_35209716:where([data-orientation='horizontal']) {
1297
+ border-top: var(--divider-size) var(--divider-border-style, solid) var(--divider-color);
1298
+ }
1299
+
1300
+ .m_35209716:where([data-orientation='vertical']) {
1301
+ border-inline-start: var(--divider-size) var(--divider-border-style, solid) var(--divider-color);
1302
+ height: auto;
1303
+ align-self: stretch;
1304
+ }
1305
+
1306
+ .m_35209716:where([data-with-label]) {
1307
+ border: 0;
1308
+ }
1309
+
1310
+ .m_6e972f40 {
1311
+ display: flex;
1312
+ align-items: center;
1313
+ font-size: var(--c-font-size-xs);
1314
+ color: var(--c-color-dimmed);
1315
+ white-space: nowrap;
1316
+ }
1317
+
1318
+ .m_6e972f40:where([data-position='left'])::before {
1319
+ display: none;
1320
+ }
1321
+
1322
+ .m_6e972f40:where([data-position='right'])::after {
1323
+ display: none;
1324
+ }
1325
+
1326
+ .m_6e972f40::before {
1327
+ content: '';
1328
+ flex: 1;
1329
+ height: calc(0.0625rem * var(--c-scale));
1330
+ border-top: var(--divider-size) var(--divider-border-style, solid) var(--divider-color);
1331
+ margin-inline-end: var(--c-spacing-xs);
1332
+ }
1333
+
1334
+ .m_6e972f40::after {
1335
+ content: '';
1336
+ flex: 1;
1337
+ height: calc(0.0625rem * var(--c-scale));
1338
+ border-top: var(--divider-size) var(--divider-border-style, solid) var(--divider-color);
1339
+ margin-inline-start: var(--c-spacing-xs);
1340
+ }
1341
+
1279
1342
  .m_6438951e {
1280
1343
  --empty-state-indicator-size-xs: calc(2rem * var(--c-scale));
1281
1344
  --empty-state-indicator-size-sm: calc(2.5rem * var(--c-scale));