@g4rcez/components 2.3.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/components/core/button.jsx +1 -1
  2. package/dist/components/core/tag.d.ts +1 -1
  3. package/dist/components/core/tag.d.ts.map +1 -1
  4. package/dist/components/core/tag.jsx +2 -2
  5. package/dist/components/display/timeline.jsx +1 -1
  6. package/dist/components/floating/command-palette.jsx +12 -12
  7. package/dist/components/floating/modal.jsx +1 -1
  8. package/dist/components/index.d.ts +1 -0
  9. package/dist/components/index.d.ts.map +1 -1
  10. package/dist/components/index.js +1 -0
  11. package/dist/components/page-calendar/calendar-header.d.ts.map +1 -1
  12. package/dist/components/page-calendar/calendar-header.jsx +13 -13
  13. package/dist/components/page-calendar/day-view.d.ts.map +1 -1
  14. package/dist/components/page-calendar/day-view.jsx +5 -2
  15. package/dist/components/page-calendar/event-pill.d.ts.map +1 -1
  16. package/dist/components/page-calendar/event-pill.jsx +4 -2
  17. package/dist/components/page-calendar/month-view.d.ts.map +1 -1
  18. package/dist/components/page-calendar/month-view.jsx +5 -5
  19. package/dist/components/page-calendar/page-calendar.d.ts.map +1 -1
  20. package/dist/components/page-calendar/page-calendar.jsx +3 -1
  21. package/dist/components/page-calendar/week-view.d.ts.map +1 -1
  22. package/dist/components/page-calendar/week-view.jsx +6 -3
  23. package/dist/components/table/index.jsx +1 -1
  24. package/dist/components/table/inner-table.jsx +2 -2
  25. package/dist/components/table/thead.jsx +1 -1
  26. package/dist/config/default-translations.d.ts +7 -0
  27. package/dist/config/default-translations.d.ts.map +1 -1
  28. package/dist/config/default-translations.jsx +7 -0
  29. package/dist/hooks/use-form.d.ts.map +1 -1
  30. package/dist/hooks/use-form.js +1 -0
  31. package/dist/hooks/use-previous.d.ts.map +1 -1
  32. package/dist/hooks/use-previous.js +1 -0
  33. package/dist/hooks/use-reactive.d.ts.map +1 -1
  34. package/dist/hooks/use-reactive.js +1 -0
  35. package/dist/hooks/use-stable-ref.d.ts.map +1 -1
  36. package/dist/hooks/use-stable-ref.js +1 -0
  37. package/dist/hooks/use-swipe.d.ts.map +1 -1
  38. package/dist/hooks/use-swipe.js +1 -0
  39. package/dist/hooks/use-translations.d.ts +7 -0
  40. package/dist/hooks/use-translations.d.ts.map +1 -1
  41. package/dist/index.css +1 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/index.mjs +5734 -5704
  44. package/dist/index.mjs.map +1 -1
  45. package/dist/index.umd.js +16 -16
  46. package/dist/index.umd.js.map +1 -1
  47. package/dist/preset/src/styles/dark.js +117 -117
  48. package/dist/preset/src/styles/light.js +109 -109
  49. package/dist/styles/dark.js +117 -117
  50. package/dist/styles/light.js +109 -109
  51. package/package.json +5 -3
@@ -40,7 +40,7 @@ const variants = {
40
40
  "ghost-neutral": "bg-transparent border-0 border-card-border",
41
41
  },
42
42
  };
43
- const buttonVariants = cva("relative overflow-hidden inline-flex duration-500 enabled:hover:bg-opacity-70 enabled:focus:bg-opacity-70 data-[loading=true]:opacity-30 data-[loading=true]:animate-pulse gap-1.5 items-center justify-center align-middle cursor-pointer whitespace-nowrap font-medium transition-colors ease-in disabled:cursor-not-allowed disabled:bg-opacity-40 disabled:text-opacity-80 focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring", {
43
+ const buttonVariants = cva("relative overflow-hidden inline-flex duration-300 enabled:hover:bg-opacity-70 enabled:focus:bg-opacity-70 data-[loading=true]:opacity-30 data-[loading=true]:animate-pulse gap-1.5 items-center justify-center align-middle cursor-pointer whitespace-nowrap font-medium transition-colors ease-linear disabled:cursor-not-allowed disabled:bg-opacity-40 disabled:text-opacity-80 focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-ring", {
44
44
  variants,
45
45
  defaultVariants: { theme: "main", size: "default", rounded: "default" },
46
46
  });
@@ -6,8 +6,8 @@ declare const variants: {
6
6
  icon: string;
7
7
  big: string;
8
8
  default: string;
9
- small: string;
10
9
  tiny: string;
10
+ small: string;
11
11
  };
12
12
  theme: {
13
13
  custom: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../../src/components/core/tag.tsx"],"names":[],"mappings":"AACA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAa,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE1D,QAAA,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;CAqBb,CAAC;AAEF,KAAK,QAAQ,GAAG,WAAW,CAAC,OAAO,QAAQ,CAAC,CAAC;AAE7C,KAAK,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAsB7C,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,MAAM,IAAI,gBAAgB,CACzE,WAAW,CAAC,OAAO,QAAQ,CAAC,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,EAC5F,CAAC,CACJ,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,GAkBnE,CAAC"}
1
+ {"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../../src/components/core/tag.tsx"],"names":[],"mappings":"AACA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAa,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE1D,QAAA,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;CAqBb,CAAC;AAEF,KAAK,QAAQ,GAAG,WAAW,CAAC,OAAO,QAAQ,CAAC,CAAC;AAE7C,KAAK,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAyB7C,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,MAAM,IAAI,gBAAgB,CACzE,WAAW,CAAC,OAAO,QAAQ,CAAC,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,EAC5F,CAAC,CACJ,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,CAAC,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,GAkBnE,CAAC"}
@@ -7,8 +7,8 @@ const variants = {
7
7
  icon: "p-1",
8
8
  big: "h-12 px-6 py-4",
9
9
  default: "h-8 px-4 py-2",
10
+ tiny: "h-5 p-1 px-2 text-xs",
10
11
  small: "h-6 p-2 px-3 text-sm",
11
- tiny: "h-6 p-2 px-3 text-xs",
12
12
  },
13
13
  theme: {
14
14
  custom: "",
@@ -38,7 +38,7 @@ const indicatorVariant = cva("size-2 aspect-square rounded-full border-0", {
38
38
  },
39
39
  },
40
40
  });
41
- const tagVariants = cva("inline-flex rounded-pill gap-1.5 border-0 items-center justify-center align-middle whitespace-nowrap", {
41
+ const tagVariants = cva("inline-flex rounded-pill gap-1.5 border-0 items-center justify-center align-middle whitespace-nowrap ease-linear duration-300 transition-all", {
42
42
  variants,
43
43
  defaultVariants: { theme: "primary", size: "default" },
44
44
  });
@@ -6,7 +6,7 @@ export const TimelineItem = (props) => (<li data-component="timeline-item" class
6
6
  <div className="relative flex items-stretch justify-start space-x-3">{props.children}</div>
7
7
  </li>);
8
8
  TimelineItem.Icon = function TimelineIcon(props) {
9
- return (<header {...props} className={css("flex size-12 items-center justify-center rounded-full bg-primary p-2 text-primary-foreground", props.className)}>
9
+ return (<header {...props} className={css("flex size-12 items-center justify-center rounded-full bg-primary p-2 text-warn-foreground", props.className)}>
10
10
  {props.children}
11
11
  </header>);
12
12
  };
@@ -81,19 +81,29 @@ export const CommandPalette = (props) => {
81
81
  });
82
82
  const commands = props.commands.flatMap((x) => (x.type === "group" ? [x, ...x.items] : [x]));
83
83
  const fuzzy = getFuzzyData(commands, text);
84
+ const displayItems = text === ""
85
+ ? commands
86
+ : [
87
+ {
88
+ type: "group",
89
+ title: "Results",
90
+ items: [],
91
+ },
92
+ ...fuzzy.filter((x) => x.type !== "group"),
93
+ ];
84
94
  const listNav = useListNavigation(root.context, {
85
95
  listRef,
86
96
  loop: true,
87
97
  activeIndex,
88
98
  virtual: true,
89
- allowEscape: true,
99
+ allowEscape: false,
90
100
  focusItemOnOpen: true,
91
101
  focusItemOnHover: true,
92
102
  openOnArrowKeyDown: true,
93
103
  scrollItemIntoView: false,
94
104
  selectedIndex: activeIndex,
95
105
  disabledIndices: (n) => {
96
- const item = fuzzy[n];
106
+ const item = displayItems[n];
97
107
  if (item)
98
108
  return item.type === "group";
99
109
  return false;
@@ -111,16 +121,6 @@ export const CommandPalette = (props) => {
111
121
  },
112
122
  });
113
123
  const { getItemProps, getReferenceProps, getFloatingProps } = useInteractions([listNav]);
114
- const displayItems = text === ""
115
- ? commands
116
- : [
117
- {
118
- type: "group",
119
- title: "Results",
120
- items: [],
121
- },
122
- ...fuzzy.filter((x) => x.type !== "group"),
123
- ];
124
124
  useEffect(() => {
125
125
  const combi = new CombiKeys();
126
126
  combi.add(bindKey, () => props.onChangeVisibility?.(true));
@@ -175,7 +175,7 @@ export const Modal = forwardRef(({ open, title, footer, asChild, trigger, childr
175
175
  <MotionConfig reducedMotion={animated ? "user" : "always"}>
176
176
  <FloatingPortal preserveTabOrder root={root}>
177
177
  <AnimatePresence mode="wait" propagate>
178
- {open ? (<FloatingOverlay lockScroll className={css("inset-0 isolate z-overlay flex h-[100dvh] !overflow-clip bg-floating-overlay/70", type === "drawer" ? "" : "items-start justify-center pt-10 lg:p-10", overlayClassName)}>
178
+ {open ? (<FloatingOverlay lockScroll className={css("inset-0 isolate z-overlay flex h-[100dvh] !overflow-clip bg-floating-overlay/80", type === "drawer" ? "" : "items-start justify-center pt-10 lg:p-10", overlayClassName)}>
179
179
  <FloatingFocusManager guards modal closeOnFocusOut={closeOnFocusOut} context={floating.context}>
180
180
  <AnimatePresence propagate>
181
181
  <motion.div {...props} {...(title
@@ -39,6 +39,7 @@ export * from "./form/transfer-list";
39
39
  export * from "./core/render-on-view";
40
40
  export * from "./display/notifications";
41
41
  export * from "./floating/command-palette";
42
+ export { CommandPalette as Commander } from "./floating/command-palette";
42
43
  export * from "./page-calendar";
43
44
  export { formReset } from "./form/formReset";
44
45
  export { createColumns, createOptionCols, type ColType, useTablePreferences, type TablePagination } from "./table/table-lib";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAK,OAAO,EAAE,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,cAAc,IAAI,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACzE,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,KAAK,OAAO,EAAE,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -39,6 +39,7 @@ export * from "./form/transfer-list";
39
39
  export * from "./core/render-on-view";
40
40
  export * from "./display/notifications";
41
41
  export * from "./floating/command-palette";
42
+ export { CommandPalette as Commander } from "./floating/command-palette";
42
43
  export * from "./page-calendar";
43
44
  export { formReset } from "./form/formReset";
44
45
  export { createColumns, createOptionCols, useTablePreferences } from "./table/table-lib";
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-header.d.ts","sourceRoot":"","sources":["../../../src/components/page-calendar/calendar-header.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEhD,KAAK,mBAAmB,GAAG;IACvB,WAAW,EAAE,IAAI,CAAC;IAClB,WAAW,EAAE,QAAQ,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAC3B,WAAW,EACX,WAAW,EACX,OAAO,EACP,UAAU,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,UAAU,GACb,EAAE,mBAAmB,+BAsGrB"}
1
+ {"version":3,"file":"calendar-header.d.ts","sourceRoot":"","sources":["../../../src/components/page-calendar/calendar-header.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEhD,KAAK,mBAAmB,GAAG;IACvB,WAAW,EAAE,IAAI,CAAC;IAClB,WAAW,EAAE,QAAQ,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAC3B,WAAW,EACX,WAAW,EACX,OAAO,EACP,UAAU,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,UAAU,GACb,EAAE,mBAAmB,+BA4GrB"}
@@ -34,32 +34,32 @@ export function CalendarHeader({ currentDate, currentView, filters, filterArea,
34
34
  });
35
35
  };
36
36
  const weekNum = getWeekNumber(currentDate);
37
- return (<div className="flex flex-col gap-4">
37
+ return (<header className="flex flex-col gap-4">
38
38
  <div className="flex items-center justify-between gap-4">
39
39
  <div className="flex items-center gap-3">
40
- <div className={`flex size-12 flex-col items-center justify-center overflow-hidden rounded-lg text-xs ${isDateToday ? "bg-primary text-primary-foreground" : "bg-card text-foreground"}`}>
40
+ <div aria-hidden="true" className={`flex size-12 flex-col items-center justify-center overflow-hidden rounded-lg text-xs ${isDateToday ? "bg-primary text-primary-foreground" : "bg-card text-foreground"}`}>
41
41
  <span className="font-light uppercase leading-none">{formatMonthShort(currentDate, locale)}</span>
42
42
  <span className="text-xl font-medium leading-none">{formatDay(currentDate, locale)}</span>
43
43
  </div>
44
44
  <div>
45
- <h1 className="text-xl font-bold leading-tight">{formatMonthYear(currentDate, locale)}</h1>
45
+ <h1 aria-live="polite" aria-atomic="true" className="text-xl font-bold leading-tight">{formatMonthYear(currentDate, locale)}</h1>
46
46
  <span className="text-xs text-muted-foreground">{t.pageCalendarWeekLabel(weekNum)}</span>
47
47
  </div>
48
48
  </div>
49
- <div className="flex items-center gap-2">
49
+ <nav aria-label={t.pageCalendarNavigation} className="flex items-center gap-2">
50
50
  <div className="flex items-center gap-1">
51
- <Button size="small" title={t.pageCalendarPrevious} theme="ghost-muted" onClick={handlePrev}>
51
+ <Button size="small" title={t.pageCalendarPrevious} aria-label={t.pageCalendarPrevious} theme="ghost-muted" onClick={handlePrev}>
52
52
  <ChevronLeft size={16}/>
53
53
  </Button>
54
- <button onClick={() => setCurrentDate(new Date())} className="rounded-md px-3 py-1.5 text-sm transition-colors hover:bg-muted/50">
54
+ <button type="button" aria-label={t.pageCalendarToday} onClick={() => setCurrentDate(new Date())} className="rounded-md px-3 py-1.5 text-sm transition-colors hover:bg-muted/50">
55
55
  {t.pageCalendarToday}
56
56
  </button>
57
- <Button size="small" title={t.pageCalendarNext} theme="ghost-muted" onClick={handleNext}>
57
+ <Button size="small" title={t.pageCalendarNext} aria-label={t.pageCalendarNext} theme="ghost-muted" onClick={handleNext}>
58
58
  <ChevronRight size={16}/>
59
59
  </Button>
60
60
  </div>
61
61
  <div className="flex rounded-md">
62
- {VIEWS.map((v) => (<Button size="small" key={v.value} onClick={() => setCurrentView(v.value)} theme={currentView === v.value ? "primary" : "muted"} className="rounded-none first:rounded-l-button last:rounded-r-button">
62
+ {VIEWS.map((v) => (<Button size="small" key={v.value} onClick={() => setCurrentView(v.value)} theme={currentView === v.value ? "primary" : "muted"} aria-pressed={currentView === v.value} className="rounded-none first:rounded-l-button last:rounded-r-button">
63
63
  {v.label}
64
64
  </Button>))}
65
65
  </div>
@@ -67,15 +67,15 @@ export function CalendarHeader({ currentDate, currentView, filters, filterArea,
67
67
  <PlusCircle size={14}/>
68
68
  {t.pageCalendarAddEvent}
69
69
  </Button>)}
70
- </div>
70
+ </nav>
71
71
  </div>
72
72
  {filterArea ??
73
- (filters.length > 0 && (<div className="flex flex-wrap items-center gap-1.5">
74
- <Calendar size={14} className="text-muted-foreground"/>
73
+ (filters.length > 0 && (<div role="group" aria-label={t.pageCalendarFilter} className="flex flex-wrap items-center gap-1.5">
74
+ <Calendar size={14} className="text-muted-foreground" aria-hidden="true"/>
75
75
  <span className="mr-1 text-xs text-muted-foreground">{t.pageCalendarFilter}</span>
76
- {filters.map((filter) => (<Tag as="button" size="small" type="button" key={filter.id} theme={filter.theme} indicator={filter.enabled ? filter.theme : undefined} onClick={() => onToggleFilter(filter.id)}>
76
+ {filters.map((filter) => (<Tag as="button" size="small" type="button" key={filter.id} theme={filter.theme} indicator={filter.enabled ? filter.theme : undefined} aria-pressed={filter.enabled} aria-label={`${filter.label}, ${filter.enabled ? t.pageCalendarFilterEnabled : t.pageCalendarFilterDisabled}`} onClick={() => onToggleFilter(filter.id)}>
77
77
  {filter.label}
78
78
  </Tag>))}
79
79
  </div>))}
80
- </div>);
80
+ </header>);
81
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"day-view.d.ts","sourceRoot":"","sources":["../../../src/components/page-calendar/day-view.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAsB9E,KAAK,YAAY,CAAC,CAAC,SAAS,iBAAiB,IAAI;IAC7C,WAAW,EAAE,IAAI,CAAC;IAClB,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9C,YAAY,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAChD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;CAC9D,CAAC;AAEF,wBAAgB,OAAO,CAAC,CAAC,SAAS,iBAAiB,EAAE,EACjD,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,GACf,EAAE,YAAY,CAAC,CAAC,CAAC,+BA8GjB"}
1
+ {"version":3,"file":"day-view.d.ts","sourceRoot":"","sources":["../../../src/components/page-calendar/day-view.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAsB9E,KAAK,YAAY,CAAC,CAAC,SAAS,iBAAiB,IAAI;IAC7C,WAAW,EAAE,IAAI,CAAC;IAClB,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9C,YAAY,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAChD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;CAC9D,CAAC;AAEF,wBAAgB,OAAO,CAAC,CAAC,SAAS,iBAAiB,EAAE,EACjD,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,GACf,EAAE,YAAY,CAAC,CAAC,CAAC,+BAkHjB"}
@@ -39,7 +39,7 @@ export function DayView({ currentDate, onSlotClick, renderEvent, eventsByDate, o
39
39
  };
40
40
  return (<div className="flex flex-1 overflow-hidden">
41
41
  <div className="flex flex-1 flex-col overflow-hidden">
42
- <div className="flex flex-shrink-0 items-center gap-3 border-b border-border px-4 py-2">
42
+ <div aria-label={formatFullDate(currentDate, locale)} className="flex flex-shrink-0 items-center gap-3 border-b border-border px-4 py-2">
43
43
  <span className={`inline-flex h-8 w-8 items-center justify-center rounded-full font-bold ${isToday(currentDate) ? "bg-primary text-primary-foreground" : "text-foreground"}`}>
44
44
  {formatDay(currentDate, locale)}
45
45
  </span>
@@ -61,7 +61,10 @@ export function DayView({ currentDate, onSlotClick, renderEvent, eventsByDate, o
61
61
  {hours.map((hour) => {
62
62
  const slotDate = new Date(currentDate);
63
63
  slotDate.setHours(hour, 0, 0, 0);
64
- return (<div key={hour} className="cursor-pointer border-b border-border/50 hover:bg-muted/20" style={{ height: HOUR_HEIGHT }} onClick={() => onSlotClick?.(slotDate)}/>);
64
+ return (<div key={hour} role="button" tabIndex={0} aria-label={formatHourLabel(hour, locale)} className="cursor-pointer border-b border-border/50 hover:bg-muted/20" style={{ height: HOUR_HEIGHT }} onClick={() => onSlotClick?.(slotDate)} onKeyDown={(e) => { if (e.key === "Enter" || e.key === " ") {
65
+ e.preventDefault();
66
+ onSlotClick?.(slotDate);
67
+ } }}/>);
65
68
  })}
66
69
  {events.map((event) => (<div key={event.id} className="absolute left-1 right-1" style={{ top: getTopOffset(event), height: HOUR_HEIGHT }} onClick={(e) => e.stopPropagation()}>
67
70
  <EventPill event={event} onClick={() => handleEventClick(event)}/>
@@ -1 +1 @@
1
- {"version":3,"file":"event-pill.d.ts","sourceRoot":"","sources":["../../../src/components/page-calendar/event-pill.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAI3D,KAAK,cAAc,GAAG;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAe,EAAE,EAAE,cAAc,+BAwB5E"}
1
+ {"version":3,"file":"event-pill.d.ts","sourceRoot":"","sources":["../../../src/components/page-calendar/event-pill.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAI3D,KAAK,cAAc,GAAG;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAe,EAAE,EAAE,cAAc,+BAyB5E"}
@@ -1,7 +1,9 @@
1
1
  import { Button } from "../core/button";
2
2
  import { css } from "../../lib/dom";
3
+ import { useTranslations } from "../../hooks/use-translations";
3
4
  import { formatEventTime } from "./page-calendar.utils";
4
5
  export function EventPill({ event, onClick, compact = false }) {
6
+ const t = useTranslations();
5
7
  const props = {
6
8
  style: {
7
9
  border: "0",
@@ -12,11 +14,11 @@ export function EventPill({ event, onClick, compact = false }) {
12
14
  className: css("w-full border-0 justify-start rounded text-xs truncate text-ellipsis overflow-hidden border leading-tight", event.className),
13
15
  };
14
16
  if (compact) {
15
- return (<Button {...props} size="small" onClick={onClick} title={event.title} theme={event.className ? "raw" : "primary"}>
17
+ return (<Button {...props} size="small" onClick={onClick} title={event.title} aria-label={t.pageCalendarEventAt(event.title, formatEventTime(event.date))} theme={event.className ? "raw" : "primary"}>
16
18
  {event.title}
17
19
  </Button>);
18
20
  }
19
- return (<Button {...props} size="small" onClick={onClick} title={event.title} theme={event.className ? "raw" : "primary"}>
21
+ return (<Button {...props} size="small" onClick={onClick} title={event.title} aria-label={t.pageCalendarEventAt(event.title, formatEventTime(event.date))} theme={event.className ? "raw" : "primary"}>
20
22
  <div className="truncate font-medium">{event.title}</div>
21
23
  <div className="text-xs opacity-60">{formatEventTime(event.date)}</div>
22
24
  </Button>);
@@ -1 +1 @@
1
- {"version":3,"file":"month-view.d.ts","sourceRoot":"","sources":["../../../src/components/page-calendar/month-view.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3D,KAAK,cAAc,GAAG;IAClB,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,WAAW,EAAE,IAAI,CAAC;IAClB,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACjC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAC3C,YAAY,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,cAAc,+BAuDtG"}
1
+ {"version":3,"file":"month-view.d.ts","sourceRoot":"","sources":["../../../src/components/page-calendar/month-view.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3D,KAAK,cAAc,GAAG;IAClB,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,WAAW,EAAE,IAAI,CAAC;IAClB,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACjC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAC3C,YAAY,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,cAAc,+BAwDtG"}
@@ -2,14 +2,14 @@ import { isSameMonth, isToday } from "date-fns";
2
2
  import { useLocale } from "../../hooks/use-locale";
3
3
  import { useTranslations } from "../../hooks/use-translations";
4
4
  import { EventPill } from "./event-pill";
5
- import { toDateKey, formatDay, getWeekDays, formatWeekDay } from "./page-calendar.utils";
5
+ import { toDateKey, formatDay, getWeekDays, formatWeekDay, formatFullDate } from "./page-calendar.utils";
6
6
  import { useMemo } from "react";
7
7
  export function MonthView({ days, eventsByDate, currentDate, onEventClick, onDayClick }) {
8
8
  const locale = useLocale();
9
9
  const t = useTranslations();
10
10
  const WEEKDAY_LABELS = useMemo(() => getWeekDays(new Date()), []);
11
11
  return (<div className="flex h-full flex-1 flex-col">
12
- <ul className="grid grid-cols-7 border-b border-border">
12
+ <ul role="row" aria-hidden="true" className="grid grid-cols-7 border-b border-border">
13
13
  {WEEKDAY_LABELS.map((date) => {
14
14
  const day = formatWeekDay(date, locale);
15
15
  return (<li key={day} className="py-2 text-center text-xs font-medium text-muted-foreground">
@@ -17,7 +17,7 @@ export function MonthView({ days, eventsByDate, currentDate, onEventClick, onDay
17
17
  </li>);
18
18
  })}
19
19
  </ul>
20
- <div className="grid flex-1 auto-rows-fr grid-cols-7">
20
+ <div role="grid" aria-label={t.pageCalendarMonthGrid} className="grid flex-1 auto-rows-fr grid-cols-7">
21
21
  {days.map((day, idx) => {
22
22
  const key = toDateKey(day);
23
23
  const events = eventsByDate.get(key) || [];
@@ -25,12 +25,12 @@ export function MonthView({ days, eventsByDate, currentDate, onEventClick, onDay
25
25
  const isCurrentDay = isToday(day);
26
26
  const visible = events.slice(0, 2);
27
27
  const overflow = events.length - 2;
28
- return (<button key={idx} type="button" onClick={() => onDayClick(day)} className={`group flex min-h-32 cursor-pointer flex-col gap-1 border-b border-r border-border p-2 transition-colors hover:bg-muted hover:bg-opacity-20 ${!isCurrentMonth ? "opacity-50" : ""}`}>
28
+ return (<button key={idx} type="button" onClick={() => onDayClick(day)} aria-label={`${formatFullDate(day, locale)}${events.length > 0 ? `, ${t.pageCalendarEventCount(events.length)}` : ""}`} className={`group flex min-h-32 cursor-pointer flex-col gap-1 border-b border-r border-border p-2 transition-colors hover:bg-muted hover:bg-opacity-20 ${!isCurrentMonth ? "opacity-50" : ""}`}>
29
29
  <div className="flex items-center justify-between">
30
30
  <span className={`flex h-6 w-6 items-center justify-center rounded-full text-xs font-medium ${isCurrentDay ? "bg-primary text-primary-foreground" : "text-foreground"}`}>
31
31
  {formatDay(day, locale)}
32
32
  </span>
33
- <span className="text-lg leading-none text-muted-foreground opacity-0 transition-opacity group-hover:opacity-40">
33
+ <span aria-hidden="true" className="text-lg leading-none text-muted-foreground opacity-0 transition-opacity group-hover:opacity-40">
34
34
  +
35
35
  </span>
36
36
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"page-calendar.d.ts","sourceRoot":"","sources":["../../../src/components/page-calendar/page-calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAOxG,KAAK,iBAAiB,CAAC,CAAC,SAAS,iBAAiB,IAAI;IAClD,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;IACrD,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;CACzD,CAAC;AAIF,wBAAgB,YAAY,CAAC,CAAC,SAAS,iBAAiB,EAAE,EACtD,MAAM,EACN,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,OAAc,EACd,WAAqB,EACrB,eAAe,EAAE,qBAAqB,GACzC,EAAE,iBAAiB,CAAC,CAAC,CAAC,+BAwEtB"}
1
+ {"version":3,"file":"page-calendar.d.ts","sourceRoot":"","sources":["../../../src/components/page-calendar/page-calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAOxG,KAAK,iBAAiB,CAAC,CAAC,SAAS,iBAAiB,IAAI;IAClD,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;IACrD,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;CACzD,CAAC;AAIF,wBAAgB,YAAY,CAAC,CAAC,SAAS,iBAAiB,EAAE,EACtD,MAAM,EACN,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,OAAc,EACd,WAAqB,EACrB,eAAe,EAAE,qBAAqB,GACzC,EAAE,iBAAiB,CAAC,CAAC,CAAC,+BAyEtB"}
@@ -1,4 +1,5 @@
1
1
  import { useMemo, useState } from "react";
2
+ import { useTranslations } from "../../hooks/use-translations";
2
3
  import { groupEventsByDate, getMonthDays, getWeekDays } from "./page-calendar.utils";
3
4
  import { CalendarHeader } from "./calendar-header";
4
5
  import { MonthView } from "./month-view";
@@ -6,6 +7,7 @@ import { WeekView } from "./week-view";
6
7
  import { DayView } from "./day-view";
7
8
  const noop = [];
8
9
  export function PageCalendar({ events, filterArea, onAddEvent, defaultDate, onSlotClick, getFilterId, renderEvent, onEventClick, filters = noop, defaultView = "month", onChangeFilters: onActiveFiltersChange, }) {
10
+ const t = useTranslations();
9
11
  const [currentView, setCurrentView] = useState(defaultView);
10
12
  const [currentDate, setCurrentDate] = useState(() => defaultDate ?? new Date());
11
13
  const [internalFilters, setInternalFilters] = useState(filters);
@@ -30,7 +32,7 @@ export function PageCalendar({ events, filterArea, onAddEvent, defaultDate, onSl
30
32
  setCurrentDate(date);
31
33
  setCurrentView("day");
32
34
  };
33
- return (<div className="flex h-full flex-grow flex-col gap-4">
35
+ return (<div role="application" aria-label={t.pageCalendarLabel} className="flex h-full flex-grow flex-col gap-4">
34
36
  <CalendarHeader filters={internalFilters} filterArea={filterArea} onAddEvent={onAddEvent} currentDate={currentDate} currentView={currentView} setCurrentDate={setCurrentDate} setCurrentView={setCurrentView} onToggleFilter={toggleFilter}/>
35
37
  {currentView === "month" && (<MonthView days={monthDays} currentDate={currentDate} eventsByDate={eventsByDate} onDayClick={handleDayClick} onEventClick={handleEventClick}/>)}
36
38
  {currentView === "week" && (<WeekView days={weekDays} currentDate={currentDate} onSlotClick={onSlotClick} eventsByDate={eventsByDate} onEventClick={handleEventClick}/>)}
@@ -1 +1 @@
1
- {"version":3,"file":"week-view.d.ts","sourceRoot":"","sources":["../../../src/components/page-calendar/week-view.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAM3D,KAAK,aAAa,GAAG;IACjB,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAC3C,WAAW,EAAE,IAAI,CAAC;IAClB,YAAY,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;CACtC,CAAC;AAQF,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,aAAa,+BA2ExF"}
1
+ {"version":3,"file":"week-view.d.ts","sourceRoot":"","sources":["../../../src/components/page-calendar/week-view.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAM3D,KAAK,aAAa,GAAG;IACjB,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAC3C,WAAW,EAAE,IAAI,CAAC;IAClB,YAAY,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;CACtC,CAAC;AAQF,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,aAAa,+BA+ExF"}
@@ -2,7 +2,7 @@ import { isToday } from "date-fns";
2
2
  import { useEffect, useRef } from "react";
3
3
  import { useLocale } from "../../hooks/use-locale";
4
4
  import { EventPill } from "./event-pill";
5
- import { getHourSlots, toDateKey, formatWeekdayShort, formatDay, formatHourLabel } from "./page-calendar.utils";
5
+ import { getHourSlots, toDateKey, formatWeekdayShort, formatDay, formatHourLabel, formatFullDate } from "./page-calendar.utils";
6
6
  const HOUR_HEIGHT = 48;
7
7
  function getTopOffset(event) {
8
8
  const hour = event.date.getHours();
@@ -25,7 +25,7 @@ export function WeekView({ days, eventsByDate, onEventClick, onSlotClick }) {
25
25
  <div className="w-[60px] flex-shrink-0"/>
26
26
  {days.map((day, idx) => {
27
27
  const isCurrentDay = isToday(day);
28
- return (<div key={idx} className="flex-1 py-2 text-center text-xs font-medium text-muted-foreground">
28
+ return (<div key={idx} aria-label={formatFullDate(day, locale)} className="flex-1 py-2 text-center text-xs font-medium text-muted-foreground">
29
29
  <span className="block">{formatWeekdayShort(day, locale)}</span>
30
30
  <span className={`inline-flex h-6 w-6 items-center justify-center rounded-full text-sm font-bold ${isCurrentDay ? "bg-primary text-primary-foreground" : "text-foreground"}`}>
31
31
  {formatDay(day, locale)}
@@ -49,7 +49,10 @@ export function WeekView({ days, eventsByDate, onEventClick, onSlotClick }) {
49
49
  {hours.map((hour) => {
50
50
  const slotDate = new Date(day);
51
51
  slotDate.setHours(hour, 0, 0, 0);
52
- return (<div key={hour} className="cursor-pointer border-b border-border/50 hover:bg-muted/20" style={{ height: HOUR_HEIGHT }} onClick={() => onSlotClick?.(slotDate)}/>);
52
+ return (<div key={hour} role="button" tabIndex={0} aria-label={formatHourLabel(hour, locale)} className="cursor-pointer border-b border-border/50 hover:bg-muted/20" style={{ height: HOUR_HEIGHT }} onClick={() => onSlotClick?.(slotDate)} onKeyDown={(e) => { if (e.key === "Enter" || e.key === " ") {
53
+ e.preventDefault();
54
+ onSlotClick?.(slotDate);
55
+ } }}/>);
53
56
  })}
54
57
  {events.map((event) => (<div key={event.id} className="absolute left-0.5 right-0.5" style={{ top: getTopOffset(event), height: HOUR_HEIGHT }} onClick={(e) => e.stopPropagation()}>
55
58
  <EventPill event={event} onClick={() => onEventClick(event)}/>
@@ -48,7 +48,7 @@ export const Table = (props) => {
48
48
  dispatch.cols(props.cols);
49
49
  }, [props.cols]);
50
50
  return (<TableProvider value={contextState}>
51
- <AnimatePresence initial={false}>
51
+ <AnimatePresence propagate initial={false}>
52
52
  {operations ? (<Metadata cols={state.cols} rows={props.rows} options={optionCols} groups={state.groups} filters={state.filters} setCols={dispatch.cols} sorters={state.sorters} setGroups={dispatch.groups} setFilters={dispatch.filters} setSorters={dispatch.sorters} pagination={props.pagination ?? null} inlineFilter={props.inlineFilter ?? true} inlineSorter={props.inlineSorter ?? true}/>) : null}
53
53
  {state.groups.length === 0 ? (<InnerTable {...props} index={0} cols={state.cols} options={optionCols} groups={state.groups} filters={state.filters} optionCols={optionCols} setCols={dispatch.cols} sorters={state.sorters} setGroups={dispatch.groups} setFilters={dispatch.filters} setSorters={dispatch.sorters} onScrollEnd={props.onScrollEnd} pagination={props.pagination ?? null} inlineFilter={props.inlineFilter ?? true} inlineSorter={props.inlineSorter ?? true}/>) : (<div className="flex flex-wrap gap-4">
54
54
  {state.groups.map((group, index) => (<div className="min-w-full" key={`group-${group.groupId}`}>
@@ -28,7 +28,7 @@ const Thead = React.forwardRef(({ context, ...props }, ref) => {
28
28
  const TRow = React.forwardRef(({ context, item, ...props }, ref) => {
29
29
  const contextProps = context?.getRowProps?.(item);
30
30
  const innerProps = { ...props, ...contextProps };
31
- return (<tr {...innerProps} role="row" ref={ref} className={`group-table-row flex h-fit flex-col flex-wrap justify-center gap-1 pb-4 md:table-row ${props?.className ?? ""}`}/>);
31
+ return (<tr {...innerProps} role="row" ref={ref} className={`group-table-row flex h-fit flex-col flex-wrap justify-center gap-1 pb-4 md:table-row ${[props?.className, contextProps?.className].filter(Boolean).join(" ")}`}/>);
32
32
  });
33
33
  const TFoot = React.forwardRef((props, ref) => {
34
34
  if (props.context.loadingMore) {
@@ -95,7 +95,7 @@ export const InnerTable = ({ cols, filters, setCols, sorters, setFilters, setSor
95
95
  getRowProps: props.getRowProps,
96
96
  loadingMore: props.loadingMore,
97
97
  };
98
- return (<div className="group relative flex w-full flex-col whitespace-nowrap rounded-lg">
98
+ return (<div className="group bg-table-background relative flex w-full flex-col whitespace-nowrap rounded-lg">
99
99
  <TableVirtuoso components={components} context={context} totalCount={rows.length} itemContent={empty ? EmptyCell : Row} data={empty ? emptyRows : rows} useWindowScroll={getScrollRef ? false : true} customScrollParent={getScrollRef ? getScrollRef() : undefined} fixedHeaderContent={() => (<TableHeader headers={cols} filters={filters} setCols={setCols} sorters={sorters} setFilters={setFilters} setSorters={setSorters} loading={!!props.loading} inlineFilter={props.inlineFilter} inlineSorter={props.inlineSorter}/>)}/>
100
100
  {empty ? <EmptyContent loading={props.loading}/> : null}
101
101
  <div aria-hidden="true" ref={ref} className="h-0.5 w-full"/>
@@ -41,7 +41,7 @@ const HeaderChild = (props) => {
41
41
  const ownSorter = props.sorters.find((x) => props.header.id === x.value);
42
42
  const ariaSort = !ownSorter?.type ? "none" : ownSorter.type === Order.Asc ? "ascending" : "descending";
43
43
  const label = getLabel(props.header);
44
- return (<Reorder.Item {...props.header.thProps} as="th" ref={dragRef} initial={false} dragSnapToOrigin dragDirectionLock role="columnheader" aria-sort={ariaSort} value={props.header} aria-busy={props.loading} data-tableheader={props.header.id} whileDrag={{ cursor: "grabbing" }} className={`typography relative min-w-0 cursor-grab font-medium md:h-14 ${props.header.thProps?.className ?? ""}`}>
44
+ return (<Reorder.Item {...props.header.thProps} as="th" ref={dragRef} initial={false} dragSnapToOrigin dragDirectionLock role="columnheader" aria-sort={ariaSort} value={props.header} aria-busy={props.loading} data-tableheader={props.header.id} whileDrag={{ cursor: "grabbing" }} className={`typography bg-table-header first:rounded-tl-lg last:rounded-tr-lg overflow-clip last:border-r-transparent border-table-border border-r-[1px] relative min-w-0 cursor-grab font-medium md:h-14 ${props.header.thProps?.className ?? ""}`}>
45
45
  <span className={`flex h-full items-center justify-between bg-table-header p-[var(--table-cell-padding)] ${props.isLast ? "rounded-tr-lg" : ""} ${props.index === 0 ? "rounded-tl-lg" : ""}`}>
46
46
  <span className="flex items-center gap-1">
47
47
  {props.inlineFilter && defaultAllowFilter ? (<Dropdown arrow trigger={<span>
@@ -18,6 +18,13 @@ export declare const defaultTranslations: {
18
18
  pageCalendarWeekLabel: (n: number) => string;
19
19
  pageCalendarFilter: string;
20
20
  pageCalendarMoreEvents: (n: number) => string;
21
+ pageCalendarLabel: string;
22
+ pageCalendarNavigation: string;
23
+ pageCalendarMonthGrid: string;
24
+ pageCalendarFilterEnabled: string;
25
+ pageCalendarFilterDisabled: string;
26
+ pageCalendarEventCount: (n: number) => string;
27
+ pageCalendarEventAt: (title: string, time: string) => string;
21
28
  commandPaletteEmpty: string;
22
29
  commandPaletteLoading: string;
23
30
  datePickerCalendarButtonLabel: string;
@@ -1 +1 @@
1
- {"version":3,"file":"default-translations.d.ts","sourceRoot":"","sources":["../../src/config/default-translations.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;+BAgBD,MAAM;;gCAEL,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAmCE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE;;;;;;;;;;;;;;;4BAqB7G;QAAE,CAAC,EAAE,MAAM,CAAA;KAAE;;+BAGV,MAAM;CACpC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,mBAAmB,CAAC"}
1
+ {"version":3,"file":"default-translations.d.ts","sourceRoot":"","sources":["../../src/config/default-translations.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;+BAgBD,MAAM;;gCAEL,MAAM;;;;;;gCAMN,MAAM;iCACL,MAAM,QAAQ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAmCb;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE;;;;;;;;;;;;;;;4BAqB7G;QAAE,CAAC,EAAE,MAAM,CAAA;KAAE;;+BAGV,MAAM;CACpC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,OAAO,mBAAmB,CAAC"}
@@ -18,6 +18,13 @@ export const defaultTranslations = {
18
18
  pageCalendarWeekLabel: (n) => `Week ${n}`,
19
19
  pageCalendarFilter: "Filter:",
20
20
  pageCalendarMoreEvents: (n) => `+${n} more...`,
21
+ pageCalendarLabel: "Calendar",
22
+ pageCalendarNavigation: "Calendar navigation",
23
+ pageCalendarMonthGrid: "Calendar month",
24
+ pageCalendarFilterEnabled: "enabled",
25
+ pageCalendarFilterDisabled: "disabled",
26
+ pageCalendarEventCount: (n) => n === 1 ? "1 event" : `${n} events`,
27
+ pageCalendarEventAt: (title, time) => `${title} at ${time}`,
21
28
  commandPaletteEmpty: "Nothing here...",
22
29
  commandPaletteLoading: "Loading...",
23
30
  datePickerCalendarButtonLabel: "Click to open a date picker",
@@ -1 +1 @@
1
- {"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["../../src/hooks/use-form.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["../../src/hooks/use-form.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { isValid } from "date-fns";
2
3
  import { parse } from "qs";
3
4
  import { useCallback, useEffect, useRef, useState } from "react";
@@ -1 +1 @@
1
- {"version":3,"file":"use-previous.d.ts","sourceRoot":"","sources":["../../src/hooks/use-previous.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,CAOzC,CAAC"}
1
+ {"version":3,"file":"use-previous.d.ts","sourceRoot":"","sources":["../../src/hooks/use-previous.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,CAOzC,CAAC"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { useEffect, useRef } from "react";
2
3
  export const usePrevious = (value) => {
3
4
  const ref = useRef(undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"use-reactive.d.ts","sourceRoot":"","sources":["../../src/hooks/use-reactive.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,8EAM/C,CAAC"}
1
+ {"version":3,"file":"use-reactive.d.ts","sourceRoot":"","sources":["../../src/hooks/use-reactive.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,8EAM/C,CAAC"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { useEffect, useState } from "react";
2
3
  export const useReactive = (t, initial) => {
3
4
  const [state, setState] = useState(() => (initial ? initial : t));
@@ -1 +1 @@
1
- {"version":3,"file":"use-stable-ref.d.ts","sourceRoot":"","sources":["../../src/hooks/use-stable-ref.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,OAAO,CAAC,iCAQvC,CAAC"}
1
+ {"version":3,"file":"use-stable-ref.d.ts","sourceRoot":"","sources":["../../src/hooks/use-stable-ref.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,OAAO,CAAC,iCAQvC,CAAC"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { useEffect, useRef } from "react";
2
3
  export const useStableRef = (value) => {
3
4
  const ref = useRef(value);
@@ -1 +1 @@
1
- {"version":3,"file":"use-swipe.d.ts","sourceRoot":"","sources":["../../src/hooks/use-swipe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAC;AAEtC,KAAK,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,cAAc,KAAK,IAAI,EAAE,SAAS,EAAE,MAAM;sBAGxE,KAAK,CAAC,UAAU;oBAElB,KAAK,CAAC,UAAU;EAU1C"}
1
+ {"version":3,"file":"use-swipe.d.ts","sourceRoot":"","sources":["../../src/hooks/use-swipe.ts"],"names":[],"mappings":"AACA,OAAO,KAAiB,MAAM,OAAO,CAAC;AAEtC,KAAK,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,cAAc,KAAK,IAAI,EAAE,SAAS,EAAE,MAAM;sBAGxE,KAAK,CAAC,UAAU;oBAElB,KAAK,CAAC,UAAU;EAU1C"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { useRef } from "react";
2
3
  export function useSwipe(onSwipe, threshold) {
3
4
  const touchStartX = useRef(null);
@@ -17,6 +17,13 @@ export declare const useTranslations: () => {
17
17
  pageCalendarWeekLabel: (n: number) => string;
18
18
  pageCalendarFilter: string;
19
19
  pageCalendarMoreEvents: (n: number) => string;
20
+ pageCalendarLabel: string;
21
+ pageCalendarNavigation: string;
22
+ pageCalendarMonthGrid: string;
23
+ pageCalendarFilterEnabled: string;
24
+ pageCalendarFilterDisabled: string;
25
+ pageCalendarEventCount: (n: number) => string;
26
+ pageCalendarEventAt: (title: string, time: string) => string;
20
27
  commandPaletteEmpty: string;
21
28
  commandPaletteLoading: string;
22
29
  datePickerCalendarButtonLabel: string;
@@ -1 +1 @@
1
- {"version":3,"file":"use-translations.d.ts","sourceRoot":"","sources":["../../src/hooks/use-translations.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAK22D,CAAC;;;;;;;;;;;;;;;;;;;;;;;CADv4D,CAAC"}
1
+ {"version":3,"file":"use-translations.d.ts","sourceRoot":"","sources":["../../src/hooks/use-translations.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAKquE,CAAC;;;;;;;;;;;;;;;;;;;;;;;CADjwE,CAAC"}