@vacano/ui 1.16.0 → 1.17.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.
@@ -1,4 +1,4 @@
1
- "use strict";const f=require("react"),e=require("@emotion/react"),u=t=>t.length===1&&/[a-z]/i.test(t)?t.toUpperCase():t,g=(t,o)=>{const r=f.useRef(new Set),a=f.useRef(o);a.current=o,f.useEffect(()=>{const i=new Set(t),w=()=>{if(i.size!==r.current.size)return!1;for(const n of i)if(!r.current.has(n))return!1;return!0},m=n=>{const s=u(n.key);r.current.add(s),w()&&a.current&&(n.preventDefault(),a.current())},c=n=>{const s=u(n.key);r.current.delete(s)},l=()=>{r.current.clear()};return window.addEventListener("keydown",m),window.addEventListener("keyup",c),window.addEventListener("blur",l),()=>{window.removeEventListener("keydown",m),window.removeEventListener("keyup",c),window.removeEventListener("blur",l)}},[t])},d=t=>{const o=Math.max(0,Math.min(100,t));return Math.round(o/100*255).toString(16).padStart(2,"0")},y=t=>/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t),k=(t,o)=>{if(!y(t))return"#000000FF";const r=t.replace("#","").slice(0,6),a=d(o);return`#${r}${a}`},p=()=>{if(typeof navigator>"u")return"unknown";const t=navigator.userAgent.toLowerCase();return/iphone|ipad|ipod/.test(t)?"ios":/android/.test(t)?"android":/mac/.test(t)?"macos":/win/.test(t)?"windows":/linux/.test(t)?"linux":"unknown"},E=()=>{if(typeof navigator>"u")return"unknown";const t=navigator.userAgent.toLowerCase();return/edg/.test(t)?"edge":/opr|opera/.test(t)?"opera":/chrome/.test(t)?"chrome":/safari/.test(t)?"safari":/firefox/.test(t)?"firefox":"unknown"},Y={sm:640,md:768,lg:1024,xl:1280,"2xl":1536},S={black:"#212529",white:"#ffffff",red:"#C1121F",green:"#16a34a",yellow:"#ffb703",gray:"#e5e7eb","steel-blue":"#0582ca","iron-grey":"#495057","baltic-blue":"#1e6091"},O={dropdown:100,modalOverlay:1e3,modal:1001,portalDropdown:1002,confirmation:1003,confirmationBar:1004},v={rotate:e.keyframes`
1
+ "use strict";const l=require("react"),e=require("@emotion/react"),f=new Set(["Meta","Control","Alt","Shift"]),w=t=>t.length===1&&/[a-z]/i.test(t)?t.toUpperCase():t,g=t=>{const r=new Set;return t.metaKey&&r.add("Meta"),t.ctrlKey&&r.add("Control"),t.altKey&&r.add("Alt"),t.shiftKey&&r.add("Shift"),r},E=(t,r)=>{const a=l.useRef(r);a.current=r,l.useEffect(()=>{if(t.length===0)return;const o=new Set(t),i=s=>{if(s.repeat)return;const m=w(s.key),c=g(s);if(f.has(m))return;for(const n of o)if(f.has(n)){if(!c.has(n))return}else if(n!==m)return;const h=new Set([...o].filter(n=>f.has(n)));c.size===h.size&&a.current&&(s.preventDefault(),a.current())};return window.addEventListener("keydown",i),()=>{window.removeEventListener("keydown",i)}},[t])},u=t=>{const r=Math.max(0,Math.min(100,t));return Math.round(r/100*255).toString(16).padStart(2,"0")},d=t=>/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t),S=(t,r)=>{if(!d(t))return"#000000FF";const a=t.replace("#","").slice(0,6),o=u(r);return`#${a}${o}`},y=()=>{if(typeof navigator>"u")return"unknown";const t=navigator.userAgent.toLowerCase();return/iphone|ipad|ipod/.test(t)?"ios":/android/.test(t)?"android":/mac/.test(t)?"macos":/win/.test(t)?"windows":/linux/.test(t)?"linux":"unknown"},k=()=>{if(typeof navigator>"u")return"unknown";const t=navigator.userAgent.toLowerCase();return/edg/.test(t)?"edge":/opr|opera/.test(t)?"opera":/chrome/.test(t)?"chrome":/safari/.test(t)?"safari":/firefox/.test(t)?"firefox":"unknown"},Y={sm:640,md:768,lg:1024,xl:1280,"2xl":1536},O={black:"#212529",white:"#ffffff",red:"#C1121F",green:"#16a34a",yellow:"#ffb703",gray:"#e5e7eb","steel-blue":"#0582ca","iron-grey":"#495057","baltic-blue":"#1e6091"},I={dropdown:100,modalOverlay:1e3,modal:1001,portalDropdown:1002,confirmation:1003,confirmationBar:1004},K={rotate:e.keyframes`
2
2
  to {
3
3
  transform: rotate(1turn);
4
4
  }
@@ -47,5 +47,5 @@
47
47
  `,slideOutBottomFade:e.keyframes`
48
48
  from { opacity: 1; transform: translateY(0); }
49
49
  to { opacity: 0; transform: translateY(100%); }
50
- `},h={Meta:{mac:"⌘",other:"Win"},Control:{mac:"⌃",other:"Ctrl"},Alt:{mac:"⌥",other:"Alt"},Shift:{mac:"⇧",other:"⇧"},ArrowUp:{mac:"↑",other:"↑"},ArrowDown:{mac:"↓",other:"↓"},ArrowLeft:{mac:"←",other:"←"},ArrowRight:{mac:"→",other:"→"},Home:{mac:"↖",other:"↖"},End:{mac:"↘",other:"↘"},PageUp:{mac:"⇞",other:"⇞"},PageDown:{mac:"⇟",other:"⇟"}," ":{mac:"␣",other:"␣"},Enter:{mac:"Enter",other:"Enter"},Tab:{mac:"⇥",other:"⇥"},Backspace:{mac:"⌫",other:"⌫"},Delete:{mac:"⌦",other:"⌦"},Escape:{mac:"Esc",other:"Esc"},Insert:{mac:"Ins",other:"Ins"},CapsLock:{mac:"⇪",other:"⇪"},NumLock:{mac:"⇭",other:"⇭"}},L=t=>{if(!t)return[];const o=p();return t.map(r=>{const a=h[r];return a?o==="macos"?a.mac:a.other:r})};exports.BREAKPOINTS=Y;exports.COLORS=S;exports.KEYFRAMES=v;exports.KEY_SYMBOLS=h;exports.Z_INDEX=O;exports.alpha=k;exports.getBrowser=E;exports.getKeySymbols=L;exports.getOperatingSystem=p;exports.isValid=y;exports.toHEX=d;exports.useKeyBinding=g;
51
- //# sourceMappingURL=keyboard-Cexig8lu.cjs.map
50
+ `},p={Meta:{mac:"⌘",other:"Win"},Control:{mac:"⌃",other:"Ctrl"},Alt:{mac:"⌥",other:"Alt"},Shift:{mac:"⇧",other:"⇧"},ArrowUp:{mac:"↑",other:"↑"},ArrowDown:{mac:"↓",other:"↓"},ArrowLeft:{mac:"←",other:"←"},ArrowRight:{mac:"→",other:"→"},Home:{mac:"↖",other:"↖"},End:{mac:"↘",other:"↘"},PageUp:{mac:"⇞",other:"⇞"},PageDown:{mac:"⇟",other:"⇟"}," ":{mac:"␣",other:"␣"},Enter:{mac:"Enter",other:"Enter"},Tab:{mac:"⇥",other:"⇥"},Backspace:{mac:"⌫",other:"⌫"},Delete:{mac:"⌦",other:"⌦"},Escape:{mac:"Esc",other:"Esc"},Insert:{mac:"Ins",other:"Ins"},CapsLock:{mac:"⇪",other:"⇪"},NumLock:{mac:"⇭",other:"⇭"}},A=t=>{if(!t)return[];const r=y();return t.map(a=>{const o=p[a];return o?r==="macos"?o.mac:o.other:a})};exports.BREAKPOINTS=Y;exports.COLORS=O;exports.KEYFRAMES=K;exports.KEY_SYMBOLS=p;exports.Z_INDEX=I;exports.alpha=S;exports.getBrowser=k;exports.getKeySymbols=A;exports.getOperatingSystem=y;exports.isValid=d;exports.toHEX=u;exports.useKeyBinding=E;
51
+ //# sourceMappingURL=keyboard-Ce6jVywF.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard-Ce6jVywF.cjs","sources":["../src/lib/hooks/useKeyBinding.ts","../src/lib/utils/colors.ts","../src/lib/utils/platform.ts","../src/lib/constants.ts","../src/lib/utils/keyboard.ts"],"sourcesContent":["import { useEffect, useRef } from 'react'\n\nimport { KeyboardEventKey } from '../types'\n\nconst MODIFIER_KEYS = new Set(['Meta', 'Control', 'Alt', 'Shift'])\n\nconst normalizeKey = (key: string): string => {\n if (key.length === 1 && /[a-z]/i.test(key)) {\n return key.toUpperCase()\n }\n return key\n}\n\nconst getModifiersFromEvent = (e: KeyboardEvent): Set<string> => {\n const modifiers = new Set<string>()\n if (e.metaKey) modifiers.add('Meta')\n if (e.ctrlKey) modifiers.add('Control')\n if (e.altKey) modifiers.add('Alt')\n if (e.shiftKey) modifiers.add('Shift')\n return modifiers\n}\n\nexport const useKeyBinding = (keys: KeyboardEventKey[], cb?: () => void) => {\n const cbRef = useRef(cb)\n\n cbRef.current = cb\n\n useEffect(() => {\n if (keys.length === 0) return\n\n const keysSet = new Set(keys)\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.repeat) return\n\n const key = normalizeKey(e.key)\n const activeModifiers = getModifiersFromEvent(e)\n\n if (MODIFIER_KEYS.has(key)) return\n\n for (const k of keysSet) {\n if (MODIFIER_KEYS.has(k)) {\n if (!activeModifiers.has(k)) return\n } else if (k !== key) {\n return\n }\n }\n\n const expectedModifiers = new Set([...keysSet].filter((k) => MODIFIER_KEYS.has(k)))\n if (activeModifiers.size !== expectedModifiers.size) return\n\n if (cbRef.current) {\n e.preventDefault()\n cbRef.current()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [keys])\n}\n","export const toHEX = (n: number): string => {\n const clamped = Math.max(0, Math.min(100, n))\n const value = Math.round((clamped / 100) * 255)\n\n return value.toString(16).padStart(2, '0')\n}\n\nexport const isValid = (hexColor: string): boolean => {\n return /^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(hexColor)\n}\n\nexport const alpha = (hexColor: string, percentage: number): string => {\n if (!isValid(hexColor)) {\n return '#000000FF'\n }\n\n const hex = hexColor.replace('#', '').slice(0, 6)\n const alphaHex = toHEX(percentage)\n\n return `#${hex}${alphaHex}`\n}\n","import { Browser, OperatingSystem } from '../types'\n\nexport const getOperatingSystem = (): OperatingSystem => {\n if (typeof navigator === 'undefined') {\n return 'unknown'\n }\n\n const ua = navigator.userAgent.toLowerCase()\n\n if (/iphone|ipad|ipod/.test(ua)) return 'ios'\n if (/android/.test(ua)) return 'android'\n if (/mac/.test(ua)) return 'macos'\n if (/win/.test(ua)) return 'windows'\n if (/linux/.test(ua)) return 'linux'\n\n return 'unknown'\n}\n\nexport const getBrowser = (): Browser => {\n if (typeof navigator === 'undefined') {\n return 'unknown'\n }\n\n const ua = navigator.userAgent.toLowerCase()\n\n if (/edg/.test(ua)) return 'edge'\n if (/opr|opera/.test(ua)) return 'opera'\n if (/chrome/.test(ua)) return 'chrome'\n if (/safari/.test(ua)) return 'safari'\n if (/firefox/.test(ua)) return 'firefox'\n\n return 'unknown'\n}\n","import { keyframes } from '@emotion/react'\n\nimport { KeyboardEventKey } from './types'\n\nexport const BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n} as const\n\nexport const COLORS = {\n black: '#212529',\n white: '#ffffff',\n red: '#C1121F',\n green: '#16a34a',\n yellow: '#ffb703',\n gray: '#e5e7eb',\n 'steel-blue': '#0582ca',\n 'iron-grey': '#495057',\n 'baltic-blue': '#1e6091',\n} as const\n\nexport const Z_INDEX = {\n dropdown: 100,\n modalOverlay: 1000,\n modal: 1001,\n portalDropdown: 1002,\n confirmation: 1003,\n confirmationBar: 1004,\n} as const\n\nexport const KEYFRAMES = {\n rotate: keyframes`\n to {\n transform: rotate(1turn);\n }\n `,\n fadeIn: keyframes`\n from { opacity: 0; }\n to { opacity: 1; }\n `,\n fadeOut: keyframes`\n from { opacity: 1; }\n to { opacity: 0; }\n `,\n slideInLeft: keyframes`\n from { transform: translateX(-100%); }\n to { transform: translateX(0); }\n `,\n slideOutLeft: keyframes`\n from { transform: translateX(0); }\n to { transform: translateX(-100%); }\n `,\n slideInRight: keyframes`\n from { transform: translateX(100%); }\n to { transform: translateX(0); }\n `,\n slideOutRight: keyframes`\n from { transform: translateX(0); }\n to { transform: translateX(100%); }\n `,\n slideInTop: keyframes`\n from { transform: translateY(-100%); }\n to { transform: translateY(0); }\n `,\n slideOutTop: keyframes`\n from { transform: translateY(0); }\n to { transform: translateY(-100%); }\n `,\n slideInBottom: keyframes`\n from { transform: translateY(100%); }\n to { transform: translateY(0); }\n `,\n slideOutBottom: keyframes`\n from { transform: translateY(0); }\n to { transform: translateY(100%); }\n `,\n scaleIn: keyframes`\n from { opacity: 0; transform: scale(0.95); }\n to { opacity: 1; transform: scale(1); }\n `,\n slideInTopFade: keyframes`\n from { opacity: 0; transform: translateY(-100%); }\n to { opacity: 1; transform: translateY(0); }\n `,\n slideOutTopFade: keyframes`\n from { opacity: 1; transform: translateY(0); }\n to { opacity: 0; transform: translateY(-100%); }\n `,\n slideInBottomFade: keyframes`\n from { opacity: 0; transform: translateY(100%); }\n to { opacity: 1; transform: translateY(0); }\n `,\n slideOutBottomFade: keyframes`\n from { opacity: 1; transform: translateY(0); }\n to { opacity: 0; transform: translateY(100%); }\n `,\n}\n\nexport const KEY_SYMBOLS: Partial<Record<KeyboardEventKey, { mac: string; other: string }>> = {\n // Modifiers\n Meta: { mac: '⌘', other: 'Win' },\n Control: { mac: '⌃', other: 'Ctrl' },\n Alt: { mac: '⌥', other: 'Alt' },\n Shift: { mac: '⇧', other: '⇧' },\n\n // Navigation\n ArrowUp: { mac: '↑', other: '↑' },\n ArrowDown: { mac: '↓', other: '↓' },\n ArrowLeft: { mac: '←', other: '←' },\n ArrowRight: { mac: '→', other: '→' },\n Home: { mac: '↖', other: '↖' },\n End: { mac: '↘', other: '↘' },\n PageUp: { mac: '⇞', other: '⇞' },\n PageDown: { mac: '⇟', other: '⇟' },\n\n // Whitespace & Enter\n ' ': { mac: '␣', other: '␣' },\n Enter: { mac: 'Enter', other: 'Enter' },\n Tab: { mac: '⇥', other: '⇥' },\n\n // Editing\n Backspace: { mac: '⌫', other: '⌫' },\n Delete: { mac: '⌦', other: '⌦' },\n Escape: { mac: 'Esc', other: 'Esc' },\n Insert: { mac: 'Ins', other: 'Ins' },\n\n // System\n CapsLock: { mac: '⇪', other: '⇪' },\n NumLock: { mac: '⇭', other: '⇭' },\n}\n","import { getOperatingSystem } from './platform'\nimport { KEY_SYMBOLS } from '../constants'\nimport { KeyboardEventKey } from '../types'\n\nexport const getKeySymbols = (keys?: KeyboardEventKey[]): string[] => {\n if (!keys) {\n return []\n }\n\n const os = getOperatingSystem()\n\n return keys.map((key) => {\n const symbol = KEY_SYMBOLS[key]\n\n if (!symbol) {\n return key\n }\n\n return os === 'macos' ? symbol.mac : symbol.other\n })\n}\n"],"names":["MODIFIER_KEYS","normalizeKey","key","getModifiersFromEvent","e","modifiers","useKeyBinding","keys","cb","cbRef","useRef","useEffect","keysSet","handleKeyDown","activeModifiers","k","expectedModifiers","toHEX","n","clamped","isValid","hexColor","alpha","percentage","hex","alphaHex","getOperatingSystem","ua","getBrowser","BREAKPOINTS","COLORS","Z_INDEX","KEYFRAMES","keyframes","KEY_SYMBOLS","getKeySymbols","os","symbol"],"mappings":"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"}
@@ -1,53 +1,53 @@
1
- import { useRef as l, useEffect as p } from "react";
1
+ import { useRef as u, useEffect as d } from "react";
2
2
  import { keyframes as r } from "@emotion/react";
3
- const u = (t) => t.length === 1 && /[a-z]/i.test(t) ? t.toUpperCase() : t, v = (t, o) => {
4
- const e = l(/* @__PURE__ */ new Set()), a = l(o);
5
- a.current = o, p(() => {
6
- const i = new Set(t), d = () => {
7
- if (i.size !== e.current.size)
8
- return !1;
9
- for (const n of i)
10
- if (!e.current.has(n))
11
- return !1;
12
- return !0;
13
- }, c = (n) => {
14
- const s = u(n.key);
15
- e.current.add(s), d() && a.current && (n.preventDefault(), a.current());
16
- }, f = (n) => {
17
- const s = u(n.key);
18
- e.current.delete(s);
19
- }, m = () => {
20
- e.current.clear();
3
+ const i = /* @__PURE__ */ new Set(["Meta", "Control", "Alt", "Shift"]), p = (t) => t.length === 1 && /[a-z]/i.test(t) ? t.toUpperCase() : t, h = (t) => {
4
+ const e = /* @__PURE__ */ new Set();
5
+ return t.metaKey && e.add("Meta"), t.ctrlKey && e.add("Control"), t.altKey && e.add("Alt"), t.shiftKey && e.add("Shift"), e;
6
+ }, I = (t, e) => {
7
+ const a = u(e);
8
+ a.current = e, d(() => {
9
+ if (t.length === 0) return;
10
+ const o = new Set(t), f = (s) => {
11
+ if (s.repeat) return;
12
+ const c = p(s.key), m = h(s);
13
+ if (i.has(c)) return;
14
+ for (const n of o)
15
+ if (i.has(n)) {
16
+ if (!m.has(n)) return;
17
+ } else if (n !== c)
18
+ return;
19
+ const l = new Set([...o].filter((n) => i.has(n)));
20
+ m.size === l.size && a.current && (s.preventDefault(), a.current());
21
21
  };
22
- return window.addEventListener("keydown", c), window.addEventListener("keyup", f), window.addEventListener("blur", m), () => {
23
- window.removeEventListener("keydown", c), window.removeEventListener("keyup", f), window.removeEventListener("blur", m);
22
+ return window.addEventListener("keydown", f), () => {
23
+ window.removeEventListener("keydown", f);
24
24
  };
25
25
  }, [t]);
26
- }, h = (t) => {
27
- const o = Math.max(0, Math.min(100, t));
28
- return Math.round(o / 100 * 255).toString(16).padStart(2, "0");
29
- }, w = (t) => /^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t), L = (t, o) => {
30
- if (!w(t))
26
+ }, w = (t) => {
27
+ const e = Math.max(0, Math.min(100, t));
28
+ return Math.round(e / 100 * 255).toString(16).padStart(2, "0");
29
+ }, y = (t) => /^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t), O = (t, e) => {
30
+ if (!y(t))
31
31
  return "#000000FF";
32
- const e = t.replace("#", "").slice(0, 6), a = h(o);
33
- return `#${e}${a}`;
34
- }, y = () => {
32
+ const a = t.replace("#", "").slice(0, 6), o = w(e);
33
+ return `#${a}${o}`;
34
+ }, g = () => {
35
35
  if (typeof navigator > "u")
36
36
  return "unknown";
37
37
  const t = navigator.userAgent.toLowerCase();
38
38
  return /iphone|ipad|ipod/.test(t) ? "ios" : /android/.test(t) ? "android" : /mac/.test(t) ? "macos" : /win/.test(t) ? "windows" : /linux/.test(t) ? "linux" : "unknown";
39
- }, k = () => {
39
+ }, v = () => {
40
40
  if (typeof navigator > "u")
41
41
  return "unknown";
42
42
  const t = navigator.userAgent.toLowerCase();
43
43
  return /edg/.test(t) ? "edge" : /opr|opera/.test(t) ? "opera" : /chrome/.test(t) ? "chrome" : /safari/.test(t) ? "safari" : /firefox/.test(t) ? "firefox" : "unknown";
44
- }, I = {
44
+ }, K = {
45
45
  sm: 640,
46
46
  md: 768,
47
47
  lg: 1024,
48
48
  xl: 1280,
49
49
  "2xl": 1536
50
- }, O = {
50
+ }, A = {
51
51
  black: "#212529",
52
52
  white: "#ffffff",
53
53
  red: "#C1121F",
@@ -57,14 +57,14 @@ const u = (t) => t.length === 1 && /[a-z]/i.test(t) ? t.toUpperCase() : t, v = (
57
57
  "steel-blue": "#0582ca",
58
58
  "iron-grey": "#495057",
59
59
  "baltic-blue": "#1e6091"
60
- }, S = {
60
+ }, M = {
61
61
  dropdown: 100,
62
62
  modalOverlay: 1e3,
63
63
  modal: 1001,
64
64
  portalDropdown: 1002,
65
65
  confirmation: 1003,
66
66
  confirmationBar: 1004
67
- }, b = {
67
+ }, B = {
68
68
  rotate: r`
69
69
  to {
70
70
  transform: rotate(1turn);
@@ -130,7 +130,7 @@ const u = (t) => t.length === 1 && /[a-z]/i.test(t) ? t.toUpperCase() : t, v = (
130
130
  from { opacity: 1; transform: translateY(0); }
131
131
  to { opacity: 0; transform: translateY(100%); }
132
132
  `
133
- }, g = {
133
+ }, Y = {
134
134
  // Modifiers
135
135
  Meta: { mac: "⌘", other: "Win" },
136
136
  Control: { mac: "⌃", other: "Ctrl" },
@@ -157,27 +157,27 @@ const u = (t) => t.length === 1 && /[a-z]/i.test(t) ? t.toUpperCase() : t, v = (
157
157
  // System
158
158
  CapsLock: { mac: "⇪", other: "⇪" },
159
159
  NumLock: { mac: "⇭", other: "⇭" }
160
- }, B = (t) => {
160
+ }, L = (t) => {
161
161
  if (!t)
162
162
  return [];
163
- const o = y();
164
- return t.map((e) => {
165
- const a = g[e];
166
- return a ? o === "macos" ? a.mac : a.other : e;
163
+ const e = g();
164
+ return t.map((a) => {
165
+ const o = Y[a];
166
+ return o ? e === "macos" ? o.mac : o.other : a;
167
167
  });
168
168
  };
169
169
  export {
170
- I as B,
171
- O as C,
172
- b as K,
173
- S as Z,
174
- L as a,
175
- y as b,
176
- k as c,
177
- g as d,
178
- B as g,
179
- w as i,
180
- h as t,
181
- v as u
170
+ K as B,
171
+ A as C,
172
+ B as K,
173
+ M as Z,
174
+ O as a,
175
+ g as b,
176
+ v as c,
177
+ Y as d,
178
+ L as g,
179
+ y as i,
180
+ w as t,
181
+ I as u
182
182
  };
183
- //# sourceMappingURL=keyboard-D5qN_1XD.js.map
183
+ //# sourceMappingURL=keyboard-WjRJTKKV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard-WjRJTKKV.js","sources":["../src/lib/hooks/useKeyBinding.ts","../src/lib/utils/colors.ts","../src/lib/utils/platform.ts","../src/lib/constants.ts","../src/lib/utils/keyboard.ts"],"sourcesContent":["import { useEffect, useRef } from 'react'\n\nimport { KeyboardEventKey } from '../types'\n\nconst MODIFIER_KEYS = new Set(['Meta', 'Control', 'Alt', 'Shift'])\n\nconst normalizeKey = (key: string): string => {\n if (key.length === 1 && /[a-z]/i.test(key)) {\n return key.toUpperCase()\n }\n return key\n}\n\nconst getModifiersFromEvent = (e: KeyboardEvent): Set<string> => {\n const modifiers = new Set<string>()\n if (e.metaKey) modifiers.add('Meta')\n if (e.ctrlKey) modifiers.add('Control')\n if (e.altKey) modifiers.add('Alt')\n if (e.shiftKey) modifiers.add('Shift')\n return modifiers\n}\n\nexport const useKeyBinding = (keys: KeyboardEventKey[], cb?: () => void) => {\n const cbRef = useRef(cb)\n\n cbRef.current = cb\n\n useEffect(() => {\n if (keys.length === 0) return\n\n const keysSet = new Set(keys)\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.repeat) return\n\n const key = normalizeKey(e.key)\n const activeModifiers = getModifiersFromEvent(e)\n\n if (MODIFIER_KEYS.has(key)) return\n\n for (const k of keysSet) {\n if (MODIFIER_KEYS.has(k)) {\n if (!activeModifiers.has(k)) return\n } else if (k !== key) {\n return\n }\n }\n\n const expectedModifiers = new Set([...keysSet].filter((k) => MODIFIER_KEYS.has(k)))\n if (activeModifiers.size !== expectedModifiers.size) return\n\n if (cbRef.current) {\n e.preventDefault()\n cbRef.current()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [keys])\n}\n","export const toHEX = (n: number): string => {\n const clamped = Math.max(0, Math.min(100, n))\n const value = Math.round((clamped / 100) * 255)\n\n return value.toString(16).padStart(2, '0')\n}\n\nexport const isValid = (hexColor: string): boolean => {\n return /^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(hexColor)\n}\n\nexport const alpha = (hexColor: string, percentage: number): string => {\n if (!isValid(hexColor)) {\n return '#000000FF'\n }\n\n const hex = hexColor.replace('#', '').slice(0, 6)\n const alphaHex = toHEX(percentage)\n\n return `#${hex}${alphaHex}`\n}\n","import { Browser, OperatingSystem } from '../types'\n\nexport const getOperatingSystem = (): OperatingSystem => {\n if (typeof navigator === 'undefined') {\n return 'unknown'\n }\n\n const ua = navigator.userAgent.toLowerCase()\n\n if (/iphone|ipad|ipod/.test(ua)) return 'ios'\n if (/android/.test(ua)) return 'android'\n if (/mac/.test(ua)) return 'macos'\n if (/win/.test(ua)) return 'windows'\n if (/linux/.test(ua)) return 'linux'\n\n return 'unknown'\n}\n\nexport const getBrowser = (): Browser => {\n if (typeof navigator === 'undefined') {\n return 'unknown'\n }\n\n const ua = navigator.userAgent.toLowerCase()\n\n if (/edg/.test(ua)) return 'edge'\n if (/opr|opera/.test(ua)) return 'opera'\n if (/chrome/.test(ua)) return 'chrome'\n if (/safari/.test(ua)) return 'safari'\n if (/firefox/.test(ua)) return 'firefox'\n\n return 'unknown'\n}\n","import { keyframes } from '@emotion/react'\n\nimport { KeyboardEventKey } from './types'\n\nexport const BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n} as const\n\nexport const COLORS = {\n black: '#212529',\n white: '#ffffff',\n red: '#C1121F',\n green: '#16a34a',\n yellow: '#ffb703',\n gray: '#e5e7eb',\n 'steel-blue': '#0582ca',\n 'iron-grey': '#495057',\n 'baltic-blue': '#1e6091',\n} as const\n\nexport const Z_INDEX = {\n dropdown: 100,\n modalOverlay: 1000,\n modal: 1001,\n portalDropdown: 1002,\n confirmation: 1003,\n confirmationBar: 1004,\n} as const\n\nexport const KEYFRAMES = {\n rotate: keyframes`\n to {\n transform: rotate(1turn);\n }\n `,\n fadeIn: keyframes`\n from { opacity: 0; }\n to { opacity: 1; }\n `,\n fadeOut: keyframes`\n from { opacity: 1; }\n to { opacity: 0; }\n `,\n slideInLeft: keyframes`\n from { transform: translateX(-100%); }\n to { transform: translateX(0); }\n `,\n slideOutLeft: keyframes`\n from { transform: translateX(0); }\n to { transform: translateX(-100%); }\n `,\n slideInRight: keyframes`\n from { transform: translateX(100%); }\n to { transform: translateX(0); }\n `,\n slideOutRight: keyframes`\n from { transform: translateX(0); }\n to { transform: translateX(100%); }\n `,\n slideInTop: keyframes`\n from { transform: translateY(-100%); }\n to { transform: translateY(0); }\n `,\n slideOutTop: keyframes`\n from { transform: translateY(0); }\n to { transform: translateY(-100%); }\n `,\n slideInBottom: keyframes`\n from { transform: translateY(100%); }\n to { transform: translateY(0); }\n `,\n slideOutBottom: keyframes`\n from { transform: translateY(0); }\n to { transform: translateY(100%); }\n `,\n scaleIn: keyframes`\n from { opacity: 0; transform: scale(0.95); }\n to { opacity: 1; transform: scale(1); }\n `,\n slideInTopFade: keyframes`\n from { opacity: 0; transform: translateY(-100%); }\n to { opacity: 1; transform: translateY(0); }\n `,\n slideOutTopFade: keyframes`\n from { opacity: 1; transform: translateY(0); }\n to { opacity: 0; transform: translateY(-100%); }\n `,\n slideInBottomFade: keyframes`\n from { opacity: 0; transform: translateY(100%); }\n to { opacity: 1; transform: translateY(0); }\n `,\n slideOutBottomFade: keyframes`\n from { opacity: 1; transform: translateY(0); }\n to { opacity: 0; transform: translateY(100%); }\n `,\n}\n\nexport const KEY_SYMBOLS: Partial<Record<KeyboardEventKey, { mac: string; other: string }>> = {\n // Modifiers\n Meta: { mac: '⌘', other: 'Win' },\n Control: { mac: '⌃', other: 'Ctrl' },\n Alt: { mac: '⌥', other: 'Alt' },\n Shift: { mac: '⇧', other: '⇧' },\n\n // Navigation\n ArrowUp: { mac: '↑', other: '↑' },\n ArrowDown: { mac: '↓', other: '↓' },\n ArrowLeft: { mac: '←', other: '←' },\n ArrowRight: { mac: '→', other: '→' },\n Home: { mac: '↖', other: '↖' },\n End: { mac: '↘', other: '↘' },\n PageUp: { mac: '⇞', other: '⇞' },\n PageDown: { mac: '⇟', other: '⇟' },\n\n // Whitespace & Enter\n ' ': { mac: '␣', other: '␣' },\n Enter: { mac: 'Enter', other: 'Enter' },\n Tab: { mac: '⇥', other: '⇥' },\n\n // Editing\n Backspace: { mac: '⌫', other: '⌫' },\n Delete: { mac: '⌦', other: '⌦' },\n Escape: { mac: 'Esc', other: 'Esc' },\n Insert: { mac: 'Ins', other: 'Ins' },\n\n // System\n CapsLock: { mac: '⇪', other: '⇪' },\n NumLock: { mac: '⇭', other: '⇭' },\n}\n","import { getOperatingSystem } from './platform'\nimport { KEY_SYMBOLS } from '../constants'\nimport { KeyboardEventKey } from '../types'\n\nexport const getKeySymbols = (keys?: KeyboardEventKey[]): string[] => {\n if (!keys) {\n return []\n }\n\n const os = getOperatingSystem()\n\n return keys.map((key) => {\n const symbol = KEY_SYMBOLS[key]\n\n if (!symbol) {\n return key\n }\n\n return os === 'macos' ? symbol.mac : symbol.other\n })\n}\n"],"names":["MODIFIER_KEYS","normalizeKey","key","getModifiersFromEvent","e","modifiers","useKeyBinding","keys","cb","cbRef","useRef","useEffect","keysSet","handleKeyDown","activeModifiers","k","expectedModifiers","toHEX","n","clamped","isValid","hexColor","alpha","percentage","hex","alphaHex","getOperatingSystem","ua","getBrowser","BREAKPOINTS","COLORS","Z_INDEX","KEYFRAMES","keyframes","KEY_SYMBOLS","getKeySymbols","os","symbol"],"mappings":"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"}
package/dist/lib.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./keyboard-Cexig8lu.cjs"),t=require("./index-BUoqL3Q7.cjs"),i=require("./tooling-Dflq0Y98.cjs");exports.BREAKPOINTS=e.BREAKPOINTS;exports.COLORS=e.COLORS;exports.KEYFRAMES=e.KEYFRAMES;exports.KEY_SYMBOLS=e.KEY_SYMBOLS;exports.Z_INDEX=e.Z_INDEX;exports.alpha=e.alpha;exports.getBrowser=e.getBrowser;exports.getKeySymbols=e.getKeySymbols;exports.getOperatingSystem=e.getOperatingSystem;exports.isValid=e.isValid;exports.toHEX=e.toHEX;exports.useKeyBinding=e.useKeyBinding;exports.mediaBetween=t.mediaBetween;exports.mediaDown=t.mediaDown;exports.mediaUp=t.mediaUp;exports.validation=t.index;exports.newClassNameGetter=i.newClassNameGetter;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./keyboard-Ce6jVywF.cjs"),t=require("./index-YmuoQ8lQ.cjs"),i=require("./tooling-Dflq0Y98.cjs");exports.BREAKPOINTS=e.BREAKPOINTS;exports.COLORS=e.COLORS;exports.KEYFRAMES=e.KEYFRAMES;exports.KEY_SYMBOLS=e.KEY_SYMBOLS;exports.Z_INDEX=e.Z_INDEX;exports.alpha=e.alpha;exports.getBrowser=e.getBrowser;exports.getKeySymbols=e.getKeySymbols;exports.getOperatingSystem=e.getOperatingSystem;exports.isValid=e.isValid;exports.toHEX=e.toHEX;exports.useKeyBinding=e.useKeyBinding;exports.mediaBetween=t.mediaBetween;exports.mediaDown=t.mediaDown;exports.mediaUp=t.mediaUp;exports.validation=t.index;exports.newClassNameGetter=i.newClassNameGetter;
2
2
  //# sourceMappingURL=lib.cjs.map
package/dist/lib.js CHANGED
@@ -1,5 +1,5 @@
1
- import { B as e, C as t, K as i, d as o, Z as m, a as r, c as n, g as d, b as S, i as g, t as p, u as B } from "./keyboard-D5qN_1XD.js";
2
- import { b as K, a as l, m as O, i as w } from "./index-B_4jp70c.js";
1
+ import { B as e, C as t, K as i, d as o, Z as m, a as r, c as n, g as d, b as S, i as g, t as p, u as B } from "./keyboard-WjRJTKKV.js";
2
+ import { b as K, a as l, m as O, i as w } from "./index-C35SsHTU.js";
3
3
  import { n as b } from "./tooling-YDHxmiMT.js";
4
4
  export {
5
5
  e as BREAKPOINTS,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vacano/ui",
3
- "version": "1.16.0",
3
+ "version": "1.17.0",
4
4
  "description": "Vacano React components library",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -116,7 +116,6 @@
116
116
  },
117
117
  "dependencies": {
118
118
  "@emotion/styled": "^11.14.1",
119
- "@tanstack/react-virtual": "^3.13.13",
120
119
  "clsx": "^2.1.1"
121
120
  },
122
121
  "devDependencies": {
@@ -125,10 +124,10 @@
125
124
  "@eslint/js": "^9.39.2",
126
125
  "@hookform/resolvers": "^5.2.2",
127
126
  "@ianvs/prettier-plugin-sort-imports": "^4.4.1",
128
- "@storybook/addon-a11y": "^10.2.10",
129
- "@storybook/addon-docs": "^10.2.10",
130
- "@storybook/addon-onboarding": "^10.2.10",
131
- "@storybook/react-vite": "^10.2.10",
127
+ "@storybook/addon-a11y": "^10.2.16",
128
+ "@storybook/addon-docs": "^10.2.16",
129
+ "@storybook/addon-onboarding": "^10.2.16",
130
+ "@storybook/react-vite": "^10.2.16",
132
131
  "@types/node": "^22.10.2",
133
132
  "@types/react": "^19.0.2",
134
133
  "@types/react-dom": "^19.0.2",
@@ -136,13 +135,13 @@
136
135
  "eslint": "^9.39.2",
137
136
  "eslint-plugin-react": "^7.37.5",
138
137
  "eslint-plugin-react-hooks": "^5.2.0",
139
- "eslint-plugin-storybook": "^10.2.10",
138
+ "eslint-plugin-storybook": "^10.2.16",
140
139
  "husky": "^9.1.7",
141
140
  "lint-staged": "^15.2.11",
142
141
  "prettier": "^3.4.2",
143
142
  "react": "^19.0.0",
144
143
  "react-dom": "^19.0.0",
145
- "storybook": "^10.2.10",
144
+ "storybook": "^10.2.16",
146
145
  "typescript": "^5.7.2",
147
146
  "typescript-eslint": "^8.50.1",
148
147
  "vite": "^6.0.6",