dashforge-ui 0.1.0 → 0.1.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 (71) hide show
  1. package/dist/dashforge-ui.css +1 -1
  2. package/dist/index.d.ts +16 -0
  3. package/dist/playground/App.vue.d.ts +65 -0
  4. package/dist/playground/App.vue.d.ts.map +1 -0
  5. package/dist/playground/main.d.ts +2 -0
  6. package/dist/playground/main.d.ts.map +1 -0
  7. package/dist/playground/vite.config.d.ts +3 -0
  8. package/dist/playground/vite.config.d.ts.map +1 -0
  9. package/dist/src/components/VButton/VButton.spec.d.ts +2 -0
  10. package/dist/src/components/VButton/VButton.spec.d.ts.map +1 -0
  11. package/dist/src/components/VButton/VButton.vue.d.ts +18 -0
  12. package/dist/src/components/VButton/VButton.vue.d.ts.map +1 -0
  13. package/dist/src/components/VButton/index.d.ts +3 -0
  14. package/dist/src/components/VButton/index.d.ts.map +1 -0
  15. package/dist/src/components/VIcon/VIcon.vue.d.ts +15 -0
  16. package/dist/src/components/VIcon/VIcon.vue.d.ts.map +1 -0
  17. package/dist/src/components/VIcon/index.d.ts +3 -0
  18. package/dist/src/components/VIcon/index.d.ts.map +1 -0
  19. package/dist/src/composables/useTheme.d.ts +6 -0
  20. package/dist/src/composables/useTheme.d.ts.map +1 -0
  21. package/dist/src/composables/utils.d.ts +4 -0
  22. package/dist/src/composables/utils.d.ts.map +1 -0
  23. package/dist/src/directives/ripple.d.ts +21 -0
  24. package/dist/src/directives/ripple.d.ts.map +1 -0
  25. package/dist/src/icons/icons.d.ts +4 -0
  26. package/dist/src/icons/icons.d.ts.map +1 -0
  27. package/dist/src/icons/index.d.ts +2 -0
  28. package/dist/src/icons/index.d.ts.map +1 -0
  29. package/dist/src/index.d.ts +16 -0
  30. package/dist/src/index.d.ts.map +1 -0
  31. package/dist/src/plugin/createDashboardUI.d.ts +18 -0
  32. package/dist/src/plugin/createDashboardUI.d.ts.map +1 -0
  33. package/dist/src/theme/createTheme.d.ts +41 -0
  34. package/dist/src/theme/createTheme.d.ts.map +1 -0
  35. package/dist/src/theme/createTheme.spec.d.ts +2 -0
  36. package/dist/src/theme/createTheme.spec.d.ts.map +1 -0
  37. package/dist/src/theme/themeEngine.d.ts +26 -0
  38. package/dist/src/theme/themeEngine.d.ts.map +1 -0
  39. package/dist/src/theme/themeEngine.spec.d.ts +2 -0
  40. package/dist/src/theme/themeEngine.spec.d.ts.map +1 -0
  41. package/dist/src/theme/themes.d.ts +4 -0
  42. package/dist/src/theme/themes.d.ts.map +1 -0
  43. package/dist/src/theme/tokens/colors.d.ts +8 -0
  44. package/dist/src/theme/tokens/colors.d.ts.map +1 -0
  45. package/dist/src/theme/tokens/components/button.d.ts +7 -0
  46. package/dist/src/theme/tokens/components/button.d.ts.map +1 -0
  47. package/dist/src/theme/tokens/components/icon.d.ts +7 -0
  48. package/dist/src/theme/tokens/components/icon.d.ts.map +1 -0
  49. package/dist/src/theme/tokens/components/index.d.ts +7 -0
  50. package/dist/src/theme/tokens/components/index.d.ts.map +1 -0
  51. package/dist/src/theme/tokens/elevation.d.ts +7 -0
  52. package/dist/src/theme/tokens/elevation.d.ts.map +1 -0
  53. package/dist/src/theme/tokens/index.d.ts +26 -0
  54. package/dist/src/theme/tokens/index.d.ts.map +1 -0
  55. package/dist/src/theme/tokens/shape.d.ts +7 -0
  56. package/dist/src/theme/tokens/shape.d.ts.map +1 -0
  57. package/dist/src/theme/tokens/spacing.d.ts +7 -0
  58. package/dist/src/theme/tokens/spacing.d.ts.map +1 -0
  59. package/dist/src/theme/tokens/types.d.ts +73 -0
  60. package/dist/src/theme/tokens/types.d.ts.map +1 -0
  61. package/dist/src/theme/tokens/typography.d.ts +7 -0
  62. package/dist/src/theme/tokens/typography.d.ts.map +1 -0
  63. package/dist/src/types/button.d.ts +27 -0
  64. package/dist/src/types/button.d.ts.map +1 -0
  65. package/dist/src/types/common.d.ts +4 -0
  66. package/dist/src/types/common.d.ts.map +1 -0
  67. package/dist/src/types/icon.d.ts +15 -0
  68. package/dist/src/types/icon.d.ts.map +1 -0
  69. package/dist/src/types/theme.d.ts +13 -0
  70. package/dist/src/types/theme.d.ts.map +1 -0
  71. package/package.json +6 -2
@@ -1 +1 @@
1
- .v-icon{overflow:hidden;align-items:center;display:inline-flex;font-feature-settings:"liga";justify-content:center;letter-spacing:normal;line-height:1;position:relative;text-indent:0;transition:.3s cubic-bezier(.25,.8,.5,1),visibility 0s;vertical-align:middle;-webkit-user-select:none;-ms-user-select:none;-moz-user-select:none;user-select:none;opacity:1}.v-icon--size-x-small{font-size:var(--df-icon-font-size-x-small)}.v-icon--size-x-small .v-icon__svg{height:var(--df-icon-font-size-x-small);width:var(--df-icon-font-size-x-small)}.v-icon--size-small{font-size:var(--df-icon-font-size-small)}.v-icon--size-small .v-icon__svg{height:var(--df-icon-font-size-small);width:var(--df-icon-font-size-small)}.v-icon--size-default{font-size:var(--df-icon-font-size-default)}.v-icon--size-default .v-icon__svg{height:var(--df-icon-font-size-default);width:var(--df-icon-font-size-default)}.v-icon--size-large{font-size:var(--df-icon-font-size-large)}.v-icon--size-large .v-icon__svg{height:var(--df-icon-font-size-large);width:var(--df-icon-font-size-large)}.v-icon--size-x-large{font-size:var(--df-icon-font-size-x-large)}.v-icon--size-x-large .v-icon__svg{height:var(--df-icon-font-size-x-large);width:var(--df-icon-font-size-x-large)}.v-icon--disabled{pointer-events:none}.v-btn{border:none;align-items:center;display:inline-flex;flex:0 0 auto;justify-content:center;outline:0;cursor:pointer;position:relative;padding:0 1em;min-width:4em;box-shadow:var(--df-btn-shadow, 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12));height:var(--df-btn-height, var(--df-btn-height-default, unset));font-size:var(--df-btn-font-size, var(--df-btn-font-size-default, inherit));font-weight:var(--df-btn-font-weight);letter-spacing:var(--df-btn-letter-spacing);text-transform:var(--df-btn-text-transform);transition-duration:var(--df-btn-transition-duration);border-radius:var(--df-btn-border-radius);font-family:var(--df-font-family);background-color:var(--df-btn-bg-color);color:var(--df-btn-text-color);border-color:var(--df-btn-border-color)}.v-btn .v-icon__svg{fill:currentColor}.v-btn__content{line-height:initial;flex-direction:column}.v-btn{-webkit-user-select:none;-ms-user-select:none;-moz-user-select:none;user-select:none;text-decoration:none;transition-property:box-shadow,transform,opacity,background-color;transition-timing-function:cubic-bezier(.4,0,.2,1);vertical-align:middle;white-space:nowrap}.v-btn:before{content:"";background-color:currentColor;border-radius:inherit;opacity:0;inset:0;color:inherit;pointer-events:none;position:absolute;transition:opacity .2s cubic-bezier(.4,0,.6,1)}.v-btn:focus,.v-btn:active{text-decoration:none}.v-btn:active:not(.v-btn--text):not(.v-btn--depressed):not(.v-btn--disabled){transform:translateY(1px);box-shadow:var(--df-btn-shadow-active, 0 1px 2px 0 rgba(0, 0, 0, .18))}.v-btn.v-btn--icon,.v-btn.v-btn--fab{padding:0;min-width:0;border-radius:50%}.v-btn--depressed,.v-btn--disabled,.v-btn--text{box-shadow:none}.v-btn--block:not(.v-btn--fab):not(.v-btn--icon){display:flex;flex:1 0 auto;min-width:100%!important}.v-btn--outlined{border:1px solid var(--df-btn-bg-color, var(--df-color-primary));color:var(--df-btn-bg-color, var(--df-color-primary));background-color:transparent}.v-btn--text{background-color:transparent;color:var(--df-btn-bg-color, var(--df-color-primary));box-shadow:none}.v-btn--stacked{flex-direction:column}.v-btn--stacked .v-btn__prepend{margin:0 0 .25rem}.v-btn--stacked .v-btn__append{margin:.25rem 0 0}.v-btn--icon{background-color:transparent;padding:0}.v-btn--fab{border-radius:100%}.v-btn--fab .v-btn__content,.v-btn--icon .v-btn__content{display:flex;justify-content:center;align-items:center}.v-btn--loading{pointer-events:none}.v-btn--loading .v-btn__content,.v-btn--loading .v-btn__append,.v-btn--loading .v-btn__prepend{opacity:0}.v-btn--disabled{pointer-events:none;cursor:not-allowed}.v-btn__loader{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.v-btn:focus:before{opacity:var(--df-btn-state-focus, .1)}.v-btn:hover:before{opacity:var(--df-btn-state-hover, .1)}.v-btn:active:before{opacity:var(--df-btn-state-active, .1)}.v-btn--size-x-small{height:var(--df-btn-height, var(--df-btn-height-x-small));font-size:var(--df-btn-font-size, var(--df-btn-font-size-x-small))}.v-btn--size-x-small.v-btn--fab{height:var(--df-btn-height, var(--df-fab-height-x-small));width:var(--df-btn-height, var(--df-fab-height-x-small));font-size:var(--df-btn-font-size, var(--df-fab-font-sizes-x-small))}.v-btn--size-x-small.v-btn--icon{width:var(--df-btn-height, var(--df-btn-height-x-small))}.v-btn--size-x-small.v-btn--stacked{height:var(--df-btn-height, var(--df-stacked-height-x-small))}.v-btn--size-small{height:var(--df-btn-height, var(--df-btn-height-small));font-size:var(--df-btn-font-size, var(--df-btn-font-size-small))}.v-btn--size-small.v-btn--fab{height:var(--df-btn-height, var(--df-fab-height-small));width:var(--df-btn-height, var(--df-fab-height-small));font-size:var(--df-btn-font-size, var(--df-fab-font-sizes-small))}.v-btn--size-small.v-btn--icon{width:var(--df-btn-height, var(--df-btn-height-small))}.v-btn--size-small.v-btn--stacked{height:var(--df-btn-height, var(--df-stacked-height-small))}.v-btn--size-default{height:var(--df-btn-height, var(--df-btn-height-default));font-size:var(--df-btn-font-size, var(--df-btn-font-size-default))}.v-btn--size-default.v-btn--fab{height:var(--df-btn-height, var(--df-fab-height-default));width:var(--df-btn-height, var(--df-fab-height-default));font-size:var(--df-btn-font-size, var(--df-fab-font-sizes-default))}.v-btn--size-default.v-btn--icon{width:var(--df-btn-height, var(--df-btn-height-default))}.v-btn--size-default.v-btn--stacked{height:var(--df-btn-height, var(--df-stacked-height-default))}.v-btn--size-large{height:var(--df-btn-height, var(--df-btn-height-large));font-size:var(--df-btn-font-size, var(--df-btn-font-size-large))}.v-btn--size-large.v-btn--fab{height:var(--df-btn-height, var(--df-fab-height-large));width:var(--df-btn-height, var(--df-fab-height-large));font-size:var(--df-btn-font-size, var(--df-fab-font-sizes-large))}.v-btn--size-large.v-btn--icon{width:var(--df-btn-height, var(--df-btn-height-large))}.v-btn--size-large.v-btn--stacked{height:var(--df-btn-height, var(--df-stacked-height-large))}.v-btn--size-x-large{height:var(--df-btn-height, var(--df-btn-height-x-large));font-size:var(--df-btn-font-size, var(--df-btn-font-size-x-large))}.v-btn--size-x-large.v-btn--fab{height:var(--df-btn-height, var(--df-fab-height-x-large));width:var(--df-btn-height, var(--df-fab-height-x-large));font-size:var(--df-btn-font-size, var(--df-fab-font-sizes-x-large))}.v-btn--size-x-large.v-btn--icon{width:var(--df-btn-height, var(--df-btn-height-x-large))}.v-btn--size-x-large.v-btn--stacked{height:var(--df-btn-height, var(--df-stacked-height-x-large))}.v-btn__prepend{margin-right:var(--df-btn-icon-spacing, .5rem)}.v-btn__append{margin-left:var(--df-btn-icon-spacing, .5rem)}
1
+ .v-icon{overflow:hidden;align-items:center;display:inline-flex;font-feature-settings:"liga";justify-content:center;letter-spacing:normal;line-height:1;position:relative;text-indent:0;transition:.3s cubic-bezier(.25,.8,.5,1),visibility 0s;vertical-align:middle;-webkit-user-select:none;-ms-user-select:none;-moz-user-select:none;user-select:none;opacity:1}.v-icon--size-x-small{font-size:var(--df-icon-font-size-x-small)}.v-icon--size-x-small .v-icon__svg{height:var(--df-icon-font-size-x-small);width:var(--df-icon-font-size-x-small)}.v-icon--size-small{font-size:var(--df-icon-font-size-small)}.v-icon--size-small .v-icon__svg{height:var(--df-icon-font-size-small);width:var(--df-icon-font-size-small)}.v-icon--size-default{font-size:var(--df-icon-font-size-default)}.v-icon--size-default .v-icon__svg{height:var(--df-icon-font-size-default);width:var(--df-icon-font-size-default)}.v-icon--size-large{font-size:var(--df-icon-font-size-large)}.v-icon--size-large .v-icon__svg{height:var(--df-icon-font-size-large);width:var(--df-icon-font-size-large)}.v-icon--size-x-large{font-size:var(--df-icon-font-size-x-large)}.v-icon--size-x-large .v-icon__svg{height:var(--df-icon-font-size-x-large);width:var(--df-icon-font-size-x-large)}.v-icon--disabled{pointer-events:none}.v-btn{border:none;align-items:center;display:inline-flex;flex:0 0 auto;justify-content:center;outline:0;cursor:pointer;position:relative;padding:0 1em;min-width:4em;box-shadow:var(--df-btn-shadow, 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12));height:var(--df-btn-height, var(--df-btn-height-default, unset));font-size:var(--df-btn-font-size, var(--df-btn-font-size-default, inherit));font-weight:var(--df-btn-font-weight);letter-spacing:var(--df-btn-letter-spacing);text-transform:var(--df-btn-text-transform);transition-duration:var(--df-btn-transition-duration);border-radius:var(--df-btn-border-radius);font-family:var(--df-font-family);background-color:var(--df-btn-bg-color);color:var(--df-btn-text-color);border-color:var(--df-btn-border-color)}.v-btn .v-icon__svg{fill:currentColor}.v-btn__content{line-height:initial;flex-direction:column}.v-btn{-webkit-user-select:none;-ms-user-select:none;-moz-user-select:none;user-select:none;text-decoration:none;transition-property:box-shadow,transform,opacity,background-color;transition-timing-function:cubic-bezier(.4,0,.2,1);vertical-align:middle;white-space:nowrap}.v-btn:before{content:"";background-color:currentColor;border-radius:inherit;opacity:0;inset:0;color:inherit;pointer-events:none;position:absolute;transition:opacity .2s cubic-bezier(.4,0,.6,1)}.v-btn:focus,.v-btn:active{text-decoration:none}.v-btn:active:not(.v-btn--text):not(.v-btn--depressed):not(.v-btn--disabled){transform:translateY(1px);box-shadow:var(--df-btn-shadow-active, 0 1px 2px 0 rgba(0, 0, 0, .18))}.v-btn.v-btn--icon,.v-btn.v-btn--fab{padding:0;min-width:0;border-radius:50%}.v-btn--depressed,.v-btn--disabled,.v-btn--text{box-shadow:none}.v-btn--block:not(.v-btn--fab):not(.v-btn--icon){display:flex;flex:1 0 auto;min-width:100%!important}.v-btn--outlined{border:1px solid var(--df-btn-bg-color, var(--df-color-primary));color:var(--df-btn-bg-color, var(--df-color-primary));background-color:transparent}.v-btn--text{background-color:transparent;color:var(--df-btn-bg-color, var(--df-color-primary));box-shadow:none}.v-btn--stacked{flex-direction:column}.v-btn--stacked .v-btn__prepend{margin:0 0 .25rem}.v-btn--stacked .v-btn__append{margin:.25rem 0 0}.v-btn--icon{background-color:transparent;padding:0}.v-btn--fab{border-radius:100%}.v-btn--fab .v-btn__content,.v-btn--icon .v-btn__content{display:flex;justify-content:center;align-items:center}.v-btn--loading{pointer-events:none}.v-btn--loading .v-btn__content,.v-btn--loading .v-btn__append,.v-btn--loading .v-btn__prepend{opacity:0}.v-btn--disabled{pointer-events:none;cursor:not-allowed}.v-btn__loader{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.v-btn:focus:before{opacity:var(--df-btn-state-focus, .1)}.v-btn:hover:before{opacity:var(--df-btn-state-hover, .1)}.v-btn:active:before{opacity:var(--df-btn-state-active, .1)}.v-btn--size-x-small{height:var(--df-btn-height, var(--df-btn-height-x-small));font-size:var(--df-btn-font-size, var(--df-btn-font-size-x-small))}.v-btn--size-x-small.v-btn--fab{height:var(--df-btn-height, var(--df-fab-height-x-small));width:var(--df-btn-height, var(--df-fab-height-x-small));font-size:var(--df-btn-font-size, var(--df-fab-font-size-x-small))}.v-btn--size-x-small.v-btn--icon{width:var(--df-btn-height, var(--df-btn-height-x-small))}.v-btn--size-x-small.v-btn--stacked{height:var(--df-btn-height, var(--df-stacked-height-x-small))}.v-btn--size-small{height:var(--df-btn-height, var(--df-btn-height-small));font-size:var(--df-btn-font-size, var(--df-btn-font-size-small))}.v-btn--size-small.v-btn--fab{height:var(--df-btn-height, var(--df-fab-height-small));width:var(--df-btn-height, var(--df-fab-height-small));font-size:var(--df-btn-font-size, var(--df-fab-font-size-small))}.v-btn--size-small.v-btn--icon{width:var(--df-btn-height, var(--df-btn-height-small))}.v-btn--size-small.v-btn--stacked{height:var(--df-btn-height, var(--df-stacked-height-small))}.v-btn--size-default{height:var(--df-btn-height, var(--df-btn-height-default));font-size:var(--df-btn-font-size, var(--df-btn-font-size-default))}.v-btn--size-default.v-btn--fab{height:var(--df-btn-height, var(--df-fab-height-default));width:var(--df-btn-height, var(--df-fab-height-default));font-size:var(--df-btn-font-size, var(--df-fab-font-size-default))}.v-btn--size-default.v-btn--icon{width:var(--df-btn-height, var(--df-btn-height-default))}.v-btn--size-default.v-btn--stacked{height:var(--df-btn-height, var(--df-stacked-height-default))}.v-btn--size-large{height:var(--df-btn-height, var(--df-btn-height-large));font-size:var(--df-btn-font-size, var(--df-btn-font-size-large))}.v-btn--size-large.v-btn--fab{height:var(--df-btn-height, var(--df-fab-height-large));width:var(--df-btn-height, var(--df-fab-height-large));font-size:var(--df-btn-font-size, var(--df-fab-font-size-large))}.v-btn--size-large.v-btn--icon{width:var(--df-btn-height, var(--df-btn-height-large))}.v-btn--size-large.v-btn--stacked{height:var(--df-btn-height, var(--df-stacked-height-large))}.v-btn--size-x-large{height:var(--df-btn-height, var(--df-btn-height-x-large));font-size:var(--df-btn-font-size, var(--df-btn-font-size-x-large))}.v-btn--size-x-large.v-btn--fab{height:var(--df-btn-height, var(--df-fab-height-x-large));width:var(--df-btn-height, var(--df-fab-height-x-large));font-size:var(--df-btn-font-size, var(--df-fab-font-size-x-large))}.v-btn--size-x-large.v-btn--icon{width:var(--df-btn-height, var(--df-btn-height-x-large))}.v-btn--size-x-large.v-btn--stacked{height:var(--df-btn-height, var(--df-stacked-height-x-large))}.v-btn__prepend{margin-right:var(--df-btn-icon-spacing, .5rem)}.v-btn__append{margin-left:var(--df-btn-icon-spacing, .5rem)}
@@ -0,0 +1,16 @@
1
+ export { createDashboardUI, DashboardUIKey, useDashboardUI, type DashboardUIOptions } from './plugin/createDashboardUI';
2
+ export { useTheme } from './composables/useTheme';
3
+ export type { Size, ColorKey } from './types/common';
4
+ export * from './types/theme';
5
+ export * from './types/button';
6
+ export * from './types/icon';
7
+ export * from './theme/tokens/index';
8
+ export { createColorPalette } from './theme/tokens/types';
9
+ export { lightTheme, darkTheme } from './theme/themes';
10
+ export { mergeThemes, generateCSSVars, applyTheme, generateUtilityClasses } from './theme/themeEngine';
11
+ export { createTheme, createDarkTheme } from './theme/createTheme';
12
+ export { iconFactory } from './icons';
13
+ export { default as VButton } from './components/VButton';
14
+ export { default as VIcon } from './components/VIcon';
15
+ export { useUtils } from './composables/utils';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,65 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {
2
+ theme: import("vue").Ref<"light" | "dark" | "custom", "light" | "dark" | "custom">;
3
+ onThemeChange: () => void;
4
+ onClick: () => void;
5
+ arrowLeft: import("../src").IconPath;
6
+ arrowRight: import("../src").IconPath;
7
+ arrowDown: import("../src").IconPath;
8
+ arrowUp: import("../src").IconPath;
9
+ chevronDown: import("../src").IconPath;
10
+ clear: import("../src").IconPath;
11
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {
12
+ VButton: {
13
+ new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("../src").ButtonProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {
14
+ ripple: boolean;
15
+ }, false, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
16
+ P: {};
17
+ B: {};
18
+ D: {};
19
+ C: {};
20
+ M: {};
21
+ Defaults: {};
22
+ }, Readonly<import("../src").ButtonProps> & Readonly<{}>, {}, {}, {}, {}, {
23
+ ripple: boolean;
24
+ }>;
25
+ __isFragment?: never;
26
+ __isTeleport?: never;
27
+ __isSuspense?: never;
28
+ } & import("vue").ComponentOptionsBase<Readonly<import("../src").ButtonProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
29
+ ripple: boolean;
30
+ }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
31
+ $slots: {
32
+ loading?: (props: {}) => any;
33
+ } & {
34
+ default?: (props: {}) => any;
35
+ };
36
+ });
37
+ VIcon: {
38
+ new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("../src").IconProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {
39
+ viewBox: string;
40
+ size: import("../src").Size;
41
+ }, false, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
42
+ P: {};
43
+ B: {};
44
+ D: {};
45
+ C: {};
46
+ M: {};
47
+ Defaults: {};
48
+ }, Readonly<import("../src").IconProps> & Readonly<{}>, {}, {}, {}, {}, {
49
+ viewBox: string;
50
+ size: import("../src").Size;
51
+ }>;
52
+ __isFragment?: never;
53
+ __isTeleport?: never;
54
+ __isSuspense?: never;
55
+ } & import("vue").ComponentOptionsBase<Readonly<import("../src").IconProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
56
+ viewBox: string;
57
+ size: import("../src").Size;
58
+ }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
59
+ $slots: {
60
+ default?: (props: {}) => any;
61
+ };
62
+ });
63
+ }, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
64
+ export default _default;
65
+ //# sourceMappingURL=App.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.vue.d.ts","sourceRoot":"","sources":["../../playground/App.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+LA,wBAiCG"}
@@ -0,0 +1,2 @@
1
+ import '../src/styles/index.scss';
2
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../playground/main.ts"],"names":[],"mappings":"AAGA,OAAO,0BAA0B,CAAA"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("vite").UserConfig;
2
+ export default _default;
3
+ //# sourceMappingURL=vite.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite.config.d.ts","sourceRoot":"","sources":["../../playground/vite.config.ts"],"names":[],"mappings":";AAIA,wBAQE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=VButton.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VButton.spec.d.ts","sourceRoot":"","sources":["../../../../src/components/VButton/VButton.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { ButtonProps } from "@/types/button";
2
+ declare var __VLS_6: {}, __VLS_11: {};
3
+ type __VLS_Slots = {} & {
4
+ loading?: (props: typeof __VLS_6) => any;
5
+ } & {
6
+ default?: (props: typeof __VLS_11) => any;
7
+ };
8
+ declare const __VLS_component: import("vue").DefineComponent<ButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ButtonProps> & Readonly<{}>, {
9
+ ripple: boolean;
10
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
12
+ export default _default;
13
+ type __VLS_WithSlots<T, S> = T & {
14
+ new (): {
15
+ $slots: S;
16
+ };
17
+ };
18
+ //# sourceMappingURL=VButton.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VButton.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/VButton/VButton.vue"],"names":[],"mappings":"AA2KA,OAAO,EAAoB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAwO/D,QAAA,IAAI,OAAO,IAAU,EAAE,QAAQ,IAAY,CAAE;AAC7C,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,GAC5C;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,CAAC;AA6BhD,QAAA,MAAM,eAAe;;6EAOnB,CAAC;wBACkB,eAAe,CAAC,OAAO,eAAe,EAAE,WAAW,CAAC;AAAzE,wBAA0E;AAa1E,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import VButton from './VButton.vue';
2
+ export default VButton;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/VButton/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,eAAe,CAAA;AAOnC,eAAe,OAAO,CAAA"}
@@ -0,0 +1,15 @@
1
+ import type { IconProps } from "@/types/icon";
2
+ import type { Size } from "@/types/common";
3
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<IconProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<IconProps> & Readonly<{}>, {
4
+ viewBox: string;
5
+ size: Size;
6
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
7
+ default?: (props: {}) => any;
8
+ }>;
9
+ export default _default;
10
+ type __VLS_WithSlots<T, S> = T & {
11
+ new (): {
12
+ $slots: S;
13
+ };
14
+ };
15
+ //# sourceMappingURL=VIcon.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VIcon.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/VIcon/VIcon.vue"],"names":[],"mappings":"AAkFA,OAAO,KAAK,EAAY,SAAS,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;;;;;cAyG7B,CAAC,KAAK,IAAgB,KAAK,GAAG;;AArG5C,wBA2IK;AAaL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import VIcon from './VIcon.vue';
2
+ export default VIcon;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/VIcon/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,aAAa,CAAA;AAO/B,eAAe,KAAK,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { Theme, PartialTheme } from '../types/theme';
2
+ export declare function useTheme(): {
3
+ current: import("vue").ComputedRef<Theme | null>;
4
+ setTheme: (theme: Theme | PartialTheme | "light" | "dark") => Theme;
5
+ };
6
+ //# sourceMappingURL=useTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../../src/composables/useTheme.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAKpD,wBAAgB,QAAQ;;sBAGG,KAAK,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM;EAmBjE"}
@@ -0,0 +1,4 @@
1
+ export declare function useUtils(): {
2
+ isObject: (arg: any) => boolean;
3
+ };
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/composables/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ;oBACC,GAAG,KAAG,OAAO;EAOrC"}
@@ -0,0 +1,21 @@
1
+ interface El extends HTMLElement {
2
+ __rippleHandler__?: (e: MouseEvent | KeyboardEvent) => void;
3
+ }
4
+ export interface RippleBinding {
5
+ color?: string;
6
+ event?: "pointerdown" | "mousedown" | "click" | "keydown";
7
+ center?: boolean;
8
+ disabled?: boolean;
9
+ duration?: number;
10
+ }
11
+ /**
12
+ * Directiva ripple para Vue
13
+ * Soporta mouse, pointer y teclado
14
+ */
15
+ export declare const ripple: {
16
+ mounted(el: El, binding?: Record<"value", RippleBinding>): void;
17
+ updated(el: El, binding?: Record<"value", RippleBinding>): void;
18
+ unmounted(el: El, binding: Record<string, any>): void;
19
+ };
20
+ export default ripple;
21
+ //# sourceMappingURL=ripple.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ripple.d.ts","sourceRoot":"","sources":["../../../src/directives/ripple.ts"],"names":[],"mappings":"AACA,UAAU,EAAG,SAAQ,WAAW;IAC9B,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,GAAG,aAAa,KAAK,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA8DD;;;GAGG;AACH,eAAO,MAAM,MAAM;gBACL,EAAE,YAAY,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC;gBAgB5C,EAAE,YAAY,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC;kBAoB1C,EAAE,WAAW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAU/C,CAAC;AAGF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { IconPath } from "@/types/icon";
2
+ export declare const iconFactory: Record<string, IconPath>;
3
+ export default iconFactory;
4
+ //# sourceMappingURL=icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../src/icons/icons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAmBhD,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { iconFactory, default } from "./icons";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,16 @@
1
+ export { createDashboardUI, DashboardUIKey, useDashboardUI, type DashboardUIOptions } from './plugin/createDashboardUI';
2
+ export { useTheme } from './composables/useTheme';
3
+ export type { Size, ColorKey } from './types/common';
4
+ export * from './types/theme';
5
+ export * from './types/button';
6
+ export * from './types/icon';
7
+ export * from './theme/tokens/index';
8
+ export { createColorPalette } from './theme/tokens/types';
9
+ export { lightTheme, darkTheme } from './theme/themes';
10
+ export { mergeThemes, generateCSSVars, applyTheme, generateUtilityClasses } from './theme/themeEngine';
11
+ export { createTheme, createDarkTheme } from './theme/createTheme';
12
+ export { iconFactory } from './icons';
13
+ export { default as VButton } from './components/VButton';
14
+ export { default as VIcon } from './components/VIcon';
15
+ export { useUtils } from './composables/utils';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AACvH,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACpD,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACtG,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { Plugin } from 'vue';
2
+ import { Theme, PartialTheme } from '../types/theme';
3
+ export interface DashboardUIOptions {
4
+ theme?: PartialTheme | 'light' | 'dark';
5
+ /**
6
+ * Automatically generate utility classes (.bg-*, .text-*, .border-*) for custom theme colors
7
+ * @default false
8
+ */
9
+ generateUtilities?: boolean;
10
+ }
11
+ export type DashboardUIState = {
12
+ theme: Theme;
13
+ generateUtilities: boolean;
14
+ };
15
+ export declare const DashboardUIKey: unique symbol;
16
+ export declare function createDashboardUI(options?: DashboardUIOptions): Plugin;
17
+ export declare function useDashboardUI(): DashboardUIState;
18
+ //# sourceMappingURL=createDashboardUI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createDashboardUI.d.ts","sourceRoot":"","sources":["../../../src/plugin/createDashboardUI.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,MAAM,EAA6B,MAAM,KAAK,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAIpD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,YAAY,GAAG,OAAO,GAAG,MAAM,CAAA;IACvC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,KAAK,CAAA;IACZ,iBAAiB,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,cAAc,eAAwB,CAAA;AAEnD,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,CAoB1E;AAED,wBAAgB,cAAc,IAAI,gBAAgB,CAIjD"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Theme Creation Helper
3
+ * Simplifies custom theme creation with sensible defaults
4
+ */
5
+ import { Theme, PartialTheme } from '../types/theme';
6
+ /**
7
+ * Creates a custom theme with default fallbacks
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { createTheme } from 'dashforge-ui'
12
+ *
13
+ * const myTheme = createTheme({
14
+ * name: 'my-brand',
15
+ * colors: {
16
+ * primary: '#ff6b35',
17
+ * 'on-primary': '#ffffff',
18
+ * 'primary-container': '#ffd4c4',
19
+ * 'on-primary-container': '#4a0000'
20
+ * }
21
+ * })
22
+ * ```
23
+ */
24
+ export declare function createTheme(config: PartialTheme, baseTheme?: Theme): Theme;
25
+ /**
26
+ * Creates a theme based on dark theme defaults
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * import { createDarkTheme } from 'dashforge-ui'
31
+ *
32
+ * const myDarkTheme = createDarkTheme({
33
+ * name: 'my-dark-brand',
34
+ * colors: {
35
+ * primary: '#a0d8ff'
36
+ * }
37
+ * })
38
+ * ```
39
+ */
40
+ export declare function createDarkTheme(config: PartialTheme): Theme;
41
+ //# sourceMappingURL=createTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTheme.d.ts","sourceRoot":"","sources":["../../../src/theme/createTheme.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAIpD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,GAAE,KAAkB,GAAG,KAAK,CAgBtF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,KAAK,CAE3D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=createTheme.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createTheme.spec.d.ts","sourceRoot":"","sources":["../../../src/theme/createTheme.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ import { Theme, PartialTheme } from '../types/theme';
2
+ export declare function mergeThemes(base: Theme, partial: PartialTheme): Theme;
3
+ export declare function generateCSSVars(theme: Theme): Record<string, string>;
4
+ /**
5
+ * Generates utility classes dynamically for custom theme colors
6
+ * Creates .bg-*, .text-*, and .border-* classes for each color in the theme
7
+ *
8
+ * @param theme - Theme object with colors
9
+ * @param options - Configuration options
10
+ * @returns void
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * const customTheme = createTheme({
15
+ * colors: { brand: '#ff6b35' }
16
+ * })
17
+ * applyTheme(customTheme) // Automatically generates .bg-brand, .text-brand, etc.
18
+ * ```
19
+ */
20
+ export declare function generateUtilityClasses(theme: Theme, options?: {
21
+ replace?: boolean;
22
+ }): void;
23
+ export declare function applyTheme(theme: Theme, options?: {
24
+ generateUtilities?: boolean;
25
+ }): void;
26
+ //# sourceMappingURL=themeEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeEngine.d.ts","sourceRoot":"","sources":["../../../src/theme/themeEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAKpD,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,GAAG,KAAK,CA0BrE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiDpE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,QAuCvF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAO,QAcrF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=themeEngine.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeEngine.spec.d.ts","sourceRoot":"","sources":["../../../src/theme/themeEngine.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { Theme } from '../types/theme';
2
+ export declare const lightTheme: Theme;
3
+ export declare const darkTheme: Theme;
4
+ //# sourceMappingURL=themes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../../src/theme/themes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAQtC,eAAO,MAAM,UAAU,EAAE,KAOxB,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,KAOvB,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Color Tokens
3
+ * Material Design 3 color system with light and dark variants
4
+ */
5
+ import type { ColorPalette } from './types';
6
+ export declare const lightColors: ColorPalette;
7
+ export declare const darkColors: ColorPalette;
8
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../../src/theme/tokens/colors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAG3C,eAAO,MAAM,WAAW,EAAE,YA0FxB,CAAA;AAEF,eAAO,MAAM,UAAU,EAAE,YA0FvB,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Button Component Tokens
3
+ * Button specific design tokens
4
+ */
5
+ import type { ButtonTokens } from '../types';
6
+ export declare const btn: ButtonTokens;
7
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../../../src/theme/tokens/components/button.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,eAAO,MAAM,GAAG,EAAE,YA+BjB,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Icon Component Tokens
3
+ * Icon specific design tokens
4
+ */
5
+ import type { IconTokens } from '../types';
6
+ export declare const icon: IconTokens;
7
+ //# sourceMappingURL=icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../../src/theme/tokens/components/icon.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1C,eAAO,MAAM,IAAI,EAAE,UAUlB,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Component Tokens
3
+ * Exports all component specific tokens
4
+ */
5
+ export { btn } from './button';
6
+ export { icon } from './icon';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/theme/tokens/components/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Elevation Tokens (Shadows)
3
+ * Material Design 3 shadow system
4
+ */
5
+ import type { ElevationTokens } from './types';
6
+ export declare const elevation: ElevationTokens;
7
+ //# sourceMappingURL=elevation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevation.d.ts","sourceRoot":"","sources":["../../../../src/theme/tokens/elevation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,eAAO,MAAM,SAAS,EAAE,eAWd,CAAA"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Material Design 3 Tokens
3
+ * Source of truth for design system values
4
+ * Generated from Material Design 3 specifications
5
+ */
6
+ export declare const materialTokens: {
7
+ readonly light: import("./types").ColorPalette;
8
+ readonly dark: import("./types").ColorPalette;
9
+ readonly spacing: import("./types").SpacingTokens;
10
+ readonly typography: import("./types").TypographyTokens;
11
+ readonly shape: import("./types").ShapeTokens;
12
+ readonly elevation: import("./types").ElevationTokens;
13
+ readonly btn: import("./types").ButtonTokens;
14
+ readonly icon: import("./types").IconTokens;
15
+ readonly fontFamily: {
16
+ readonly body: "Roboto, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", \"Helvetica Neue\", Arial, sans-serif";
17
+ };
18
+ };
19
+ export default materialTokens;
20
+ export { lightColors, darkColors } from './colors';
21
+ export { spacing } from './spacing';
22
+ export { typography } from './typography';
23
+ export { shape } from './shape';
24
+ export { elevation } from './elevation';
25
+ export { btn, icon } from './components/index';
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/tokens/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,eAAO,MAAM,cAAc;;;;;;;;;;;;CAYjB,CAAA;AAEV,eAAe,cAAc,CAAA;AAG7B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Shape Tokens
3
+ * Border radius values following Material Design 3
4
+ */
5
+ import type { ShapeTokens } from './types';
6
+ export declare const shape: ShapeTokens;
7
+ //# sourceMappingURL=shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../../../../src/theme/tokens/shape.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,eAAO,MAAM,KAAK,EAAE,WAQV,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Spacing Scale
3
+ * 4px base unit following Material Design 3
4
+ */
5
+ import type { SpacingTokens } from './types';
6
+ export declare const spacing: SpacingTokens;
7
+ //# sourceMappingURL=spacing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spacing.d.ts","sourceRoot":"","sources":["../../../../src/theme/tokens/spacing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,eAAO,MAAM,OAAO,EAAE,aAOZ,CAAA"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Tipos compartidos para los tokens del design system
3
+ */
4
+ /**
5
+ * Color Palette - Estructura flexible y tipada
6
+ *
7
+ * Todos los colores tienen la misma estructura simples valores hex.
8
+ * Para cada color base, debe haber:
9
+ * - colorName: string
10
+ * - on-colorName: string
11
+ * - colorName-container: string
12
+ * - on-colorName-container: string
13
+ *
14
+ * Ejemplo:
15
+ * {
16
+ * primary: '#00af67',
17
+ * 'on-primary': '#ffffff',
18
+ * 'primary-container': '#b1f5db',
19
+ * 'on-primary-container': '#00291b',
20
+ * }
21
+ *
22
+ * El usuario puede definir colores personalizados sin limitarse a nombres predefinidos
23
+ */
24
+ export type ColorPalette = Record<string, string>;
25
+ /**
26
+ * Helper function para crear y validar paletas de color
27
+ * Asegura la estructura correcta sin restringir nombres de colores
28
+ */
29
+ export declare function createColorPalette<T extends ColorPalette>(palette: T): T;
30
+ export type SpacingTokens = {
31
+ xs: string;
32
+ sm: string;
33
+ md: string;
34
+ lg: string;
35
+ xl: string;
36
+ '2xl': string;
37
+ };
38
+ export type TypographyToken = {
39
+ fontSize: string;
40
+ fontWeight: number;
41
+ lineHeight: string;
42
+ letterSpacing: string;
43
+ };
44
+ export type TypographyTokens = Record<'display-large' | 'display-medium' | 'display-small' | 'headline-large' | 'headline-medium' | 'headline-small' | 'title-large' | 'title-medium' | 'title-small' | 'body-large' | 'body-medium' | 'body-small' | 'label-large' | 'label-medium' | 'label-small', TypographyToken>;
45
+ export type ShapeTokens = Record<'corner-none' | 'corner-extra-small' | 'corner-small' | 'corner-medium' | 'corner-large' | 'corner-extra-large' | 'corner-full', string>;
46
+ export type ElevationTokens = Record<'level-0' | 'level-1' | 'level-2' | 'level-3' | 'level-4' | 'level-5', string>;
47
+ export type ButtonStates = {
48
+ focus: number;
49
+ hover: number;
50
+ active: number;
51
+ };
52
+ export type ButtonFontSizes = Record<'x-small' | 'small' | 'default' | 'large' | 'x-large', string>;
53
+ export type ButtonHeights = Record<'x-small' | 'small' | 'default' | 'large' | 'x-large', string>;
54
+ export type ButtonTokens = {
55
+ states: ButtonStates;
56
+ fontSizes: ButtonFontSizes;
57
+ height: ButtonHeights;
58
+ borderRadius: string;
59
+ roundedBorderRadius: string;
60
+ borderStyle: string;
61
+ borderWidth: string;
62
+ fontWeight: number;
63
+ letterSpacing: string;
64
+ textTransform: string;
65
+ transitionDuration: string;
66
+ };
67
+ export type IconFontSizes = Record<'x-small' | 'small' | 'default' | 'large' | 'x-large', string>;
68
+ export type IconTokens = {
69
+ class: string;
70
+ prefix: string;
71
+ fontSizes: IconFontSizes;
72
+ };
73
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/theme/tokens/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEjD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAwBxE;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,CACjC,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,aAAa,GACb,cAAc,GACd,aAAa,GACb,YAAY,GACZ,aAAa,GACb,YAAY,GACZ,aAAa,GACb,cAAc,GACd,aAAa,EACf,eAAe,CAChB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAC5B,aAAa,GACb,oBAAoB,GACpB,cAAc,GACd,eAAe,GACf,cAAc,GACd,oBAAoB,GACpB,aAAa,EACf,MAAM,CACP,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAClC,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,EACrE,MAAM,CACP,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAClC,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EACrD,MAAM,CACP,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAChC,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EACrD,MAAM,CACP,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,YAAY,CAAA;IACpB,SAAS,EAAE,eAAe,CAAA;IAC1B,MAAM,EAAE,aAAa,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAChC,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EACrD,MAAM,CACP,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,aAAa,CAAA;CACzB,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Typography Scale
3
+ * Material Design 3 typography system
4
+ */
5
+ import type { TypographyTokens } from './types';
6
+ export declare const typography: TypographyTokens;
7
+ //# sourceMappingURL=typography.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typography.d.ts","sourceRoot":"","sources":["../../../../src/theme/tokens/typography.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,eAAO,MAAM,UAAU,EAAE,gBA2Ff,CAAA"}
@@ -0,0 +1,27 @@
1
+ import type { Size } from './common';
2
+ import type { IconPath } from './icon';
3
+ export type ButtonSize = Size;
4
+ export type ButtonClassKeys = "stacked" | "disabled" | "loading" | "fab" | "depressed" | "text" | "outlined" | "block" | "rounded" | "icon";
5
+ export interface ButtonProps {
6
+ disabled?: boolean;
7
+ link?: boolean;
8
+ appendIcon?: Array<IconPath> | IconPath | string;
9
+ prependIcon?: Array<IconPath> | IconPath | string;
10
+ ripple?: boolean;
11
+ loading?: boolean;
12
+ color?: string;
13
+ fab?: boolean;
14
+ depressed?: boolean;
15
+ text?: boolean;
16
+ outlined?: boolean;
17
+ block?: boolean;
18
+ size?: Size;
19
+ type?: string;
20
+ rounded?: boolean;
21
+ stacked?: boolean;
22
+ icon?: Array<IconPath> | IconPath | string;
23
+ height?: string | number;
24
+ width?: string | number;
25
+ }
26
+ export declare const BUTTON_CLASS_MAP: Record<ButtonClassKeys, string>;
27
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/types/button.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGvC,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC;AAE9B,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,UAAU,GACV,SAAS,GACT,KAAK,GACL,WAAW,GACX,MAAM,GACN,UAAU,GACV,OAAO,GACP,SAAS,GACT,MAAM,CAAC;AAEX,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC;IACjD,WAAW,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAW5D,CAAC"}
@@ -0,0 +1,4 @@
1
+ export type Theme = 'light' | 'dark' | 'custom';
2
+ export type ColorKey = string;
3
+ export type Size = 'x-small' | 'small' | 'default' | 'large' | 'x-large';
4
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/types/common.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAG9B,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Size } from './common';
2
+ export type IconPath = {
3
+ d: string;
4
+ fill?: string;
5
+ class?: string;
6
+ };
7
+ export interface IconProps {
8
+ color?: string;
9
+ disabled?: boolean;
10
+ preffix?: string;
11
+ viewBox?: string;
12
+ icon?: Array<IconPath> | IconPath | string;
13
+ size?: Size;
14
+ }
15
+ //# sourceMappingURL=icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../src/types/icon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,MAAM,QAAQ,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3C,IAAI,CAAC,EAAE,IAAI,CAAC;CACb"}
@@ -0,0 +1,13 @@
1
+ import type { ColorPalette, SpacingTokens, TypographyTokens, ShapeTokens, ElevationTokens } from '../theme/tokens/types';
2
+ export type CSSVarMap = Record<string, string>;
3
+ export interface Theme {
4
+ name?: string;
5
+ colors: ColorPalette;
6
+ spacing?: SpacingTokens;
7
+ typography?: TypographyTokens;
8
+ shape?: ShapeTokens;
9
+ elevation?: ElevationTokens;
10
+ tokens?: Record<string, string>;
11
+ }
12
+ export type PartialTheme = Partial<Theme>;
13
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/types/theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAExH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAE9C,MAAM,WAAW,KAAK;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,YAAY,CAAA;IACpB,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,SAAS,CAAC,EAAE,eAAe,CAAA;IAE3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAED,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dashforge-ui",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "private": false,
5
5
  "description": "Dashboard-focused Vue 3 UI framework skeleton (TypeScript, Vite, SCSS, theming)",
6
6
  "main": "dist/index.umd.js",
@@ -27,8 +27,12 @@
27
27
  "vite",
28
28
  "typescript"
29
29
  ],
30
- "author": "",
30
+ "author": "ever.leandros91",
31
31
  "license": "MIT",
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/yourusername/dashforge-ui"
35
+ },
32
36
  "devDependencies": {
33
37
  "@types/node": "^20.0.0",
34
38
  "@vitejs/plugin-vue": "^6.0.4",