@myghf/ui 0.2.0 → 0.3.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 (38) hide show
  1. package/README.md +121 -4
  2. package/dist/components/alert/Alert.vue.d.ts +46 -0
  3. package/dist/components/alert/Alert.vue.d.ts.map +1 -0
  4. package/dist/components/button/Button.vue.d.ts +4 -4
  5. package/dist/components/button/Button.vue.d.ts.map +1 -1
  6. package/dist/components/date-picker/DatePicker.vue.d.ts +24 -1
  7. package/dist/components/date-picker/DatePicker.vue.d.ts.map +1 -1
  8. package/dist/components/drawer/Drawer.vue.d.ts +54 -0
  9. package/dist/components/drawer/Drawer.vue.d.ts.map +1 -0
  10. package/dist/components/input-number/InputNumber.vue.d.ts +31 -0
  11. package/dist/components/input-number/InputNumber.vue.d.ts.map +1 -0
  12. package/dist/components/tag/Tag.vue.d.ts +4 -28
  13. package/dist/components/tag/Tag.vue.d.ts.map +1 -1
  14. package/dist/components/theme-toggle/ThemeToggle.vue.d.ts +10 -0
  15. package/dist/components/theme-toggle/ThemeToggle.vue.d.ts.map +1 -0
  16. package/dist/components/toast/Toast.vue.d.ts +12 -0
  17. package/dist/components/toast/Toast.vue.d.ts.map +1 -0
  18. package/dist/components/toast/Toaster.vue.d.ts +33 -0
  19. package/dist/components/toast/Toaster.vue.d.ts.map +1 -0
  20. package/dist/components/toast/useToast.d.ts +44 -0
  21. package/dist/components/toast/useToast.d.ts.map +1 -0
  22. package/dist/index.d.ts +17 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +1285 -418
  25. package/dist/index.js.map +1 -1
  26. package/dist/lib/date.d.ts +7 -0
  27. package/dist/lib/date.d.ts.map +1 -1
  28. package/dist/lib/locale.d.ts +6 -0
  29. package/dist/lib/locale.d.ts.map +1 -0
  30. package/dist/lib/number.d.ts +16 -0
  31. package/dist/lib/number.d.ts.map +1 -0
  32. package/dist/lib/theme.d.ts +36 -0
  33. package/dist/lib/theme.d.ts.map +1 -0
  34. package/dist/lib/tones.d.ts +9 -0
  35. package/dist/lib/tones.d.ts.map +1 -0
  36. package/dist/tailwindPreset.js +1 -0
  37. package/dist/tokens.css +13 -0
  38. package/package.json +7 -1
@@ -7,4 +7,11 @@ export declare function clampTime(d: Date, time: string): Date;
7
7
  export declare function sortRange(a: Date, b: Date): [Date, Date];
8
8
  export declare function sortRange(a: Date | null, b: Date | null): [Date | null, Date | null];
9
9
  export declare function toISODate(d: Date): string;
10
+ export declare function buildHourOptions(hourFormat: '12' | '24'): number[];
11
+ export declare function buildMinuteOptions(minuteStep: number): number[];
12
+ export declare function to12Hour(hour24: number): {
13
+ hour: number;
14
+ meridiem: 'am' | 'pm';
15
+ };
16
+ export declare function from12Hour(hour: number, meridiem: 'am' | 'pm'): number;
10
17
  //# sourceMappingURL=date.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/lib/date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAsC,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAE1G,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,YAAY,CAEjD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAG9C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI9C;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AACzD,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,CAAA;AAMrF,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAIzC"}
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/lib/date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAsC,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAE1G,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,YAAY,CAEjD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAG9C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI9C;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AACzD,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,CAAA;AAMrF,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAIzC;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,EAAE,CAGlE;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAK/D;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAA;CAAE,CAKhF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAGtE"}
@@ -0,0 +1,6 @@
1
+ export declare function getFirstDayOfWeek(locale: string): number;
2
+ export declare function getWeekdayLabels(locale: string, weekStartsOn: number): string[];
3
+ export declare function getMonthLabel(date: Date, locale: string): string;
4
+ export declare function formatLocalizedDate(date: Date, locale: string): string;
5
+ export declare function formatLocalizedTime(date: Date, locale: string, hourFormat: '12' | '24'): string;
6
+ //# sourceMappingURL=locale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../src/lib/locale.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAYxD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAO/E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAM/F"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Normalise a numeric field value: empty and non-finite inputs collapse to
3
+ * `null`, while `0` and every other finite number pass through unchanged.
4
+ */
5
+ export declare function toNumberOrNull(value: number | null | undefined): number | null;
6
+ /**
7
+ * Compose the `Intl.NumberFormatOptions` for a number field. Later sources win,
8
+ * so explicit `formatOptions` override the `currency` shorthand and `integer`
9
+ * forces zero fraction digits regardless of what came before.
10
+ */
11
+ export declare function mergeFormatOptions(input: {
12
+ currency?: string;
13
+ formatOptions?: Intl.NumberFormatOptions;
14
+ integer?: boolean;
15
+ }): Intl.NumberFormatOptions;
16
+ //# sourceMappingURL=number.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/lib/number.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAG9E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAA;IACxC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG,IAAI,CAAC,mBAAmB,CAM3B"}
@@ -0,0 +1,36 @@
1
+ import { ComputedRef, Ref } from 'vue';
2
+ export type ThemeMode = 'light' | 'dark' | 'system';
3
+ export type ThemeAttribute = 'both' | 'class' | 'data-theme';
4
+ export interface UseThemeOptions {
5
+ /** localStorage key used to persist an explicit mode. Defaults to `'myghf-theme'`. */
6
+ storageKey?: string;
7
+ /** Which attribute(s) to write on `<html>`. Defaults to `'both'`. */
8
+ attribute?: ThemeAttribute;
9
+ /** Mode used when nothing is stored. Defaults to `'system'`. */
10
+ defaultMode?: ThemeMode;
11
+ }
12
+ export interface UseThemeReturn {
13
+ /** The user's chosen mode (`'system'` follows the OS). */
14
+ mode: Ref<ThemeMode>;
15
+ /** The effective mode after resolving `'system'` against the OS preference. */
16
+ resolved: ComputedRef<'light' | 'dark'>;
17
+ /** Convenience flag: `resolved === 'dark'`. */
18
+ isDark: ComputedRef<boolean>;
19
+ setMode(mode: ThemeMode): void;
20
+ toggle(): void;
21
+ enable(): void;
22
+ disable(): void;
23
+ reset(): void;
24
+ }
25
+ /**
26
+ * Builds an independent theme controller. Writes `.dark` and/or
27
+ * `data-theme="dark"` on `<html>` so the CSS dark token block activates.
28
+ * Safe to call during SSR: without a DOM it resolves to light and is a no-op.
29
+ */
30
+ export declare function createTheme(options?: UseThemeOptions): UseThemeReturn;
31
+ /**
32
+ * Returns a single shared theme controller, lazily created on first call.
33
+ * Later calls reuse it; in dev a mismatched options object logs a warning.
34
+ */
35
+ export declare function useTheme(options?: UseThemeOptions): UseThemeReturn;
36
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/lib/theme.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAE3C,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;AACnD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,CAAA;AAE5D,MAAM,WAAW,eAAe;IAC9B,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qEAAqE;IACrE,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,gEAAgE;IAChE,WAAW,CAAC,EAAE,SAAS,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;IACpB,+EAA+E;IAC/E,QAAQ,EAAE,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,CAAA;IACvC,+CAA+C;IAC/C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5B,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IAC9B,MAAM,IAAI,IAAI,CAAA;IACd,MAAM,IAAI,IAAI,CAAA;IACd,OAAO,IAAI,IAAI,CAAA;IACf,KAAK,IAAI,IAAI,CAAA;CACd;AA4CD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,eAAoB,GAAG,cAAc,CA4EzE;AAKD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,cAAc,CAmBlE"}
@@ -0,0 +1,9 @@
1
+ export type Tone = 'info' | 'success' | 'warning' | 'danger' | 'secondary';
2
+ export interface ToneClasses {
3
+ soft: string;
4
+ outline: string;
5
+ icon: string;
6
+ role: 'alert' | 'status';
7
+ }
8
+ export declare const toneClasses: Record<Tone, ToneClasses>;
9
+ //# sourceMappingURL=tones.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tones.d.ts","sourceRoot":"","sources":["../../src/lib/tones.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAA;AAE1E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;CACzB;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,CA+BjD,CAAA"}
@@ -1,5 +1,6 @@
1
1
  /** @type {import('tailwindcss').Config} */
2
2
  export default {
3
+ darkMode: ['class', '.dark'],
3
4
  theme: {
4
5
  extend: {
5
6
  fontFamily: {
package/dist/tokens.css CHANGED
@@ -79,3 +79,16 @@
79
79
  --myghf-info-800: 0 73 99;
80
80
  --myghf-info-900: 0 49 66;
81
81
  }
82
+
83
+ [data-theme='dark'],
84
+ .dark {
85
+ color-scheme: dark;
86
+
87
+ /* surfaces */
88
+ --myghf-background: 15 18 23;
89
+ --myghf-foreground: 243 244 246;
90
+ --myghf-surface: 26 30 37;
91
+ --myghf-surface-muted: 39 44 53;
92
+ --myghf-border: 55 61 71;
93
+ --myghf-muted: 156 163 175;
94
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myghf/ui",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -36,6 +36,9 @@
36
36
  "typecheck": "vue-tsc --noEmit",
37
37
  "test": "vitest run",
38
38
  "changeset": "changeset",
39
+ "docs:dev": "vitepress dev docs",
40
+ "docs:build": "vitepress build docs",
41
+ "docs:preview": "vitepress preview docs",
39
42
  "prepublishOnly": "npm run build"
40
43
  },
41
44
  "dependencies": {
@@ -57,11 +60,14 @@
57
60
  "@vitejs/plugin-vue": "^6.0.7",
58
61
  "@vue/test-utils": "^2.5.1",
59
62
  "@vue/tsconfig": "^0.9.1",
63
+ "autoprefixer": "^10.6.1",
60
64
  "jsdom": "^30.1.1",
65
+ "postcss": "^8.5.28",
61
66
  "tailwindcss": "^3.4.19",
62
67
  "typescript": "~6.0.2",
63
68
  "vite": "^8.3.1",
64
69
  "vite-plugin-dts": "^4.5.4",
70
+ "vitepress": "^1.6.4",
65
71
  "vitest": "^4.1.10",
66
72
  "vue": "^3.5.39",
67
73
  "vue-tsc": "^3.3.5"