@spatika/react 1.3.1 → 1.5.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 (127) hide show
  1. package/AGENTS.md +6 -3
  2. package/README.md +1 -1
  3. package/dist/composites/EventCalendar.d.ts +13 -2
  4. package/dist/composites/EventCalendar.d.ts.map +1 -1
  5. package/dist/composites/EventCalendar.js +13 -27
  6. package/dist/composites/GlassCard.d.ts +1 -1
  7. package/dist/composites/RichTextEditor.d.ts +1 -4
  8. package/dist/composites/RichTextEditor.d.ts.map +1 -1
  9. package/dist/composites/RichTextEditor.js +12 -19
  10. package/dist/composites/SurfaceCard.d.ts +1 -1
  11. package/dist/composites/Tag.d.ts +2 -2
  12. package/dist/composites/cartesian-charts.d.ts +12 -2
  13. package/dist/composites/cartesian-charts.d.ts.map +1 -1
  14. package/dist/composites/cartesian-charts.js +27 -13
  15. package/dist/composites/chart-composition.d.ts +19 -1
  16. package/dist/composites/chart-composition.d.ts.map +1 -1
  17. package/dist/composites/chart-composition.js +124 -62
  18. package/dist/composites/chart-interaction.d.ts +81 -0
  19. package/dist/composites/chart-interaction.d.ts.map +1 -0
  20. package/dist/composites/chart-interaction.js +56 -0
  21. package/dist/composites/chart-ui.d.ts +8 -13
  22. package/dist/composites/chart-ui.d.ts.map +1 -1
  23. package/dist/composites/chart-ui.js +9 -6
  24. package/dist/composites/flow-charts.d.ts +6 -1
  25. package/dist/composites/flow-charts.d.ts.map +1 -1
  26. package/dist/composites/flow-charts.js +28 -14
  27. package/dist/composites/radial-charts.d.ts +11 -1
  28. package/dist/composites/radial-charts.d.ts.map +1 -1
  29. package/dist/composites/radial-charts.js +33 -14
  30. package/dist/composites/scheduler-ui.d.ts +14 -1
  31. package/dist/composites/scheduler-ui.d.ts.map +1 -1
  32. package/dist/composites/scheduler-ui.js +23 -2
  33. package/dist/index.d.ts +14 -26
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +8 -14
  36. package/dist/lib/breakpoints.d.ts +17 -0
  37. package/dist/lib/breakpoints.d.ts.map +1 -0
  38. package/dist/lib/breakpoints.js +23 -0
  39. package/dist/lib/chips.d.ts +3 -0
  40. package/dist/lib/chips.d.ts.map +1 -1
  41. package/dist/lib/chips.js +10 -0
  42. package/dist/lib/create-theme.d.ts +162 -0
  43. package/dist/lib/create-theme.d.ts.map +1 -0
  44. package/dist/lib/create-theme.js +138 -0
  45. package/dist/lib/scheduler.d.ts +12 -0
  46. package/dist/lib/scheduler.d.ts.map +1 -1
  47. package/dist/lib/scheduler.js +24 -2
  48. package/dist/lib/themes.d.ts +17 -7
  49. package/dist/lib/themes.d.ts.map +1 -1
  50. package/dist/lib/themes.js +22 -8
  51. package/dist/lib/use-media-query.d.ts +9 -0
  52. package/dist/lib/use-media-query.d.ts.map +1 -1
  53. package/dist/lib/use-media-query.js +28 -1
  54. package/dist/primitives/Alert.d.ts +1 -1
  55. package/dist/primitives/Badge.d.ts +2 -2
  56. package/dist/primitives/Button.d.ts +2 -2
  57. package/dist/primitives/Container.d.ts +2 -2
  58. package/dist/primitives/Fab.d.ts +4 -4
  59. package/dist/primitives/Grid.d.ts +2 -1
  60. package/dist/primitives/Grid.d.ts.map +1 -1
  61. package/dist/primitives/Grid.js +10 -2
  62. package/dist/primitives/IconButton.d.ts +2 -2
  63. package/dist/primitives/NativeSelect.d.ts +10 -1
  64. package/dist/primitives/NativeSelect.d.ts.map +1 -1
  65. package/dist/primitives/NativeSelect.js +2 -2
  66. package/dist/primitives/ToggleButton.d.ts +1 -1
  67. package/dist/theme/SpatikaThemeProvider.d.ts +4 -5
  68. package/dist/theme/SpatikaThemeProvider.d.ts.map +1 -1
  69. package/dist/theme/SpatikaThemeProvider.js +28 -13
  70. package/package.json +4 -2
  71. package/skills/spatika-ui/SKILL.md +28 -5
  72. package/src/composites/EventCalendar.test.tsx +293 -0
  73. package/src/composites/EventCalendar.tsx +38 -27
  74. package/src/composites/RichTextEditor.test.tsx +51 -0
  75. package/src/composites/RichTextEditor.tsx +20 -84
  76. package/src/composites/chart-ui.test.tsx +21 -0
  77. package/src/composites/scheduler-ui.tsx +128 -26
  78. package/src/composites/scheduler.test.tsx +0 -219
  79. package/src/index.test.ts +10 -0
  80. package/src/index.ts +148 -65
  81. package/src/lib/breakpoints.test.ts +29 -0
  82. package/src/lib/breakpoints.ts +28 -0
  83. package/src/lib/chips.ts +16 -0
  84. package/src/lib/create-theme.test.ts +79 -0
  85. package/src/lib/create-theme.ts +249 -0
  86. package/src/lib/scheduler.test.ts +26 -0
  87. package/src/lib/scheduler.ts +36 -2
  88. package/src/lib/themes.test.ts +17 -0
  89. package/src/lib/themes.ts +43 -12
  90. package/src/lib/use-media-query.test.tsx +80 -0
  91. package/src/lib/use-media-query.ts +35 -1
  92. package/src/primitives/Grid.test.tsx +55 -0
  93. package/src/primitives/Grid.tsx +13 -3
  94. package/src/primitives/NativeSelect.test.tsx +28 -0
  95. package/src/primitives/NativeSelect.tsx +14 -4
  96. package/src/primitives/mui-more.test.tsx +17 -0
  97. package/src/theme/SpatikaThemeProvider.test.tsx +38 -0
  98. package/src/theme/SpatikaThemeProvider.tsx +43 -15
  99. package/src/composites/ChartDataGrid.test.tsx +0 -57
  100. package/src/composites/ChartDataGrid.tsx +0 -196
  101. package/src/composites/MapChart.test.tsx +0 -39
  102. package/src/composites/MapChart.tsx +0 -130
  103. package/src/composites/ScatterWebGL.test.tsx +0 -25
  104. package/src/composites/ScatterWebGL.tsx +0 -79
  105. package/src/composites/cartesian-charts.test.tsx +0 -52
  106. package/src/composites/cartesian-charts.tsx +0 -1287
  107. package/src/composites/chart-composition.test.tsx +0 -53
  108. package/src/composites/chart-composition.tsx +0 -898
  109. package/src/composites/chart-ui.tsx +0 -328
  110. package/src/composites/charts-3d.test.tsx +0 -25
  111. package/src/composites/charts-3d.tsx +0 -318
  112. package/src/composites/charts.test.tsx +0 -254
  113. package/src/composites/flow-charts.test.tsx +0 -79
  114. package/src/composites/flow-charts.tsx +0 -607
  115. package/src/composites/radial-charts.test.tsx +0 -74
  116. package/src/composites/radial-charts.tsx +0 -617
  117. package/src/lib/chart-export.test.ts +0 -20
  118. package/src/lib/chart-export.ts +0 -99
  119. package/src/lib/charts-platform.test.ts +0 -93
  120. package/src/lib/charts.test.ts +0 -132
  121. package/src/lib/charts.ts +0 -1021
  122. package/src/lib/geo.test.ts +0 -42
  123. package/src/lib/geo.ts +0 -138
  124. package/src/lib/iso.test.ts +0 -22
  125. package/src/lib/iso.ts +0 -102
  126. package/src/lib/webgl-scatter.test.ts +0 -36
  127. package/src/lib/webgl-scatter.ts +0 -230
package/AGENTS.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Spatika UI — agent guide
2
2
 
3
- Glass React design system. Packages: `@spatika/tokens`, `@spatika/react`.
3
+ Glass React design system. Packages: `@spatika/tokens`, `@spatika/react`, `@spatika/charts`, `@spatika/editor`.
4
4
  Human docs: https://spatika.sweyam.com · Machine index: https://spatika.sweyam.com/llms.txt
5
5
 
6
6
  ## Use this library
@@ -34,6 +34,8 @@ export function App() {
34
34
  ### Themes
35
35
  `mukta` (pearl light) · `neelam` (sapphire dark) · `usha` (dawn) · `sandhya` (dusk, no blur)
36
36
 
37
+ Brand overlay: `createTheme({ id, extends, palette })` passed as `customThemes` on `SpatikaThemeProvider`. Breakpoints: `BREAKPOINTS` with `Grid` `xs`–`xl`. Guide: https://spatika.sweyam.com/customize
38
+
37
39
  ### When to use
38
40
 
39
41
  | Need | Component |
@@ -49,7 +51,8 @@ export function App() {
49
51
  | Empty list | `EmptyState` |
50
52
  | Titled modal | `Dialog` (not `Modal`) |
51
53
  | Toast stack | `Toaster` + `useToast` |
52
- | Charts | `BarChart`, `LineChart`, or `ChartContainer` |
54
+ | Charts | `BarChart`, `LineChart`, or `ChartContainer` from `@spatika/charts` |
55
+ | Rich text | `SpatikaEditor` from `@spatika/editor` (import `@spatika/editor/styles.css`) |
53
56
  | Calendar | `EventCalendar` |
54
57
 
55
58
  Canonical snippets: https://spatika.sweyam.com/docs/components.md
@@ -60,7 +63,7 @@ Cursor skill (copy into the consumer repo):
60
63
 
61
64
  ## Change this library
62
65
 
63
- Monorepo: `packages/tokens` (CSS) → `packages/react` (components) → `apps/website` (docs).
66
+ Monorepo: `packages/tokens` (CSS) → `packages/charts` (plots) → `packages/react` (components, re-exports charts) → `apps/website` (docs).
64
67
 
65
68
  When adding a component:
66
69
  1. Export it from `packages/react/src/index.ts`
package/README.md CHANGED
@@ -49,7 +49,7 @@ Button sizes include `touch` / `icon-touch` (≥44px) for mobile-first chrome.
49
49
 
50
50
  - **Primitives** — Button, ButtonGroup, Accordion, Autocomplete, Grid, Menu, Dialog, Stepper, List, Fab, and more
51
51
  - **Composites** — AppHeader, AppSidebar, Card, EntityCard, FloatingPageChrome, CoverHero, FilterSheet, MobileTabBar, CommandSearchField, NotificationBell, Timeline, EventCalendar, EventTimeline, AmountInput, SegmentedControl, Toaster, media cards, PIN/lock chrome, SiteNav, SiteFooter, SectionHeading, Tag
52
- - **Charts** — SVG charts covering the MUI X catalog, plus `ChartContainer` composition (mixed plots, zoom/pan, brush, dual axes, toolbar export)
52
+ - **Charts** — install `@spatika/charts` (also re-exported from `@spatika/react`). SVG plots covering the MUI X catalog, plus `ChartContainer` composition (mixed plots, zoom/pan, brush, `syncId`, shared tooltips, dual axes, toolbar export)
53
53
 
54
54
  ## Tailwind tip
55
55
 
@@ -1,5 +1,6 @@
1
1
  import { type ReactNode } from "react";
2
- import { type CalendarView, type NormalizedEvent, type SchedulerEvent, type SchedulerPreferences, type SchedulerResource } from "../lib/scheduler";
2
+ import { type CalendarView, type CalendarVisibleRange, type NormalizedEvent, type SchedulerEvent, type SchedulerPreferences, type SchedulerResource } from "../lib/scheduler";
3
+ import { type SchedulerToolbarDensity } from "./scheduler-ui";
3
4
  export type EventCalendarEventVariant = "month-bar" | "month-timed" | "all-day" | "time-grid" | "agenda";
4
5
  export type EventCalendarEventRenderContext = {
5
6
  view: CalendarView;
@@ -61,6 +62,16 @@ export type EventCalendarProps = {
61
62
  showPreferences?: boolean;
62
63
  /** Extra controls after the view menu. Ignored when `renderToolbar` is set. */
63
64
  toolbarTrailing?: ReactNode;
65
+ /** Default toolbar layout. Compact is a single desktop row. Ignored when `renderToolbar` is set. */
66
+ toolbarDensity?: SchedulerToolbarDensity;
67
+ /** Month/year native selects on the default toolbar. Ignored when `renderToolbar` is set. */
68
+ showDateJump?: boolean;
69
+ /** Years in the date-jump select. Defaults to a window around the current year. */
70
+ yearOptions?: number[];
71
+ /** Fires when the painted date window changes. `end` is exclusive. */
72
+ onVisibleRangeChange?: (range: CalendarVisibleRange & {
73
+ view: CalendarView;
74
+ }) => void;
64
75
  /** Replace event chip contents. The kit still wraps with the click/drag trigger. */
65
76
  renderEvent?: (event: NormalizedEvent, context: EventCalendarEventRenderContext) => ReactNode;
66
77
  /** Replace the toolbar. The default kit toolbar is used when omitted. */
@@ -68,5 +79,5 @@ export type EventCalendarProps = {
68
79
  className?: string;
69
80
  };
70
81
  /** Month / week / day / agenda calendar with editor, resize, recurrence, and preferences. */
71
- export declare function EventCalendar({ events, resources, view: viewProp, defaultView, onViewChange, date: dateProp, defaultDate, onDateChange, views, weekStartsOn, hourStart, hourEnd, locale, readOnly, areEventsDraggable, areEventsResizable, preferences, defaultPreferences, onPreferencesChange, onEventClick, onEventChange, onEventCreate, onEventDelete, onSlotClick, showEventEditor, showPreferences, toolbarTrailing, renderEvent, renderToolbar, className, }: EventCalendarProps): import("react").JSX.Element;
82
+ export declare function EventCalendar({ events, resources, view: viewProp, defaultView, onViewChange, date: dateProp, defaultDate, onDateChange, views, weekStartsOn, hourStart, hourEnd, locale, readOnly, areEventsDraggable, areEventsResizable, preferences, defaultPreferences, onPreferencesChange, onEventClick, onEventChange, onEventCreate, onEventDelete, onSlotClick, showEventEditor, showPreferences, toolbarTrailing, toolbarDensity, showDateJump, yearOptions, onVisibleRangeChange, renderEvent, renderToolbar, className, }: EventCalendarProps): import("react").JSX.Element;
72
83
  //# sourceMappingURL=EventCalendar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventCalendar.d.ts","sourceRoot":"","sources":["../../src/composites/EventCalendar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,EAkCL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAY1B,MAAM,MAAM,yBAAyB,GACjC,WAAW,GACX,aAAa,GACb,SAAS,GACT,WAAW,GACX,QAAQ,CAAC;AAEb,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,yBAAyB,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,eAAe,EAAE,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAC5C,YAAY,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,mBAAmB,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACpC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;IAC1C,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAC;IAC5E,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAC/E,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,GAAG,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1E;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oFAAoF;IACpF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+EAA+E;IAC/E,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,oFAAoF;IACpF,WAAW,CAAC,EAAE,CACZ,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,+BAA+B,KACrC,SAAS,CAAC;IACf,yEAAyE;IACzE,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,SAAS,CAAC;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAuDF,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,EAC5B,MAAW,EACX,SAAc,EACd,IAAI,EAAE,QAAQ,EACd,WAAqB,EACrB,YAAY,EACZ,IAAI,EAAE,QAAQ,EACd,WAAW,EACX,YAAY,EACZ,KAA0C,EAC1C,YAAgB,EAChB,SAAa,EACb,OAAY,EACZ,MAAM,EACN,QAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,WAAW,EACX,eAAsB,EACtB,eAAsB,EACtB,eAAe,EACf,WAAW,EACX,aAAa,EACb,SAAS,GACV,EAAE,kBAAkB,+BA2VpB"}
1
+ {"version":3,"file":"EventCalendar.d.ts","sourceRoot":"","sources":["../../src/composites/EventCalendar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,EAoCL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAQL,KAAK,uBAAuB,EAC7B,MAAM,gBAAgB,CAAC;AAGxB,MAAM,MAAM,yBAAyB,GACjC,WAAW,GACX,aAAa,GACb,SAAS,GACT,WAAW,GACX,QAAQ,CAAC;AAEb,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,yBAAyB,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,eAAe,EAAE,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAC5C,YAAY,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,mBAAmB,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACpC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;IAC1C,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAC;IAC5E,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAC/E,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,GAAG,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1E;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oFAAoF;IACpF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+EAA+E;IAC/E,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,oGAAoG;IACpG,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC,6FAA6F;IAC7F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,sEAAsE;IACtE,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,GAAG;QAAE,IAAI,EAAE,YAAY,CAAA;KAAE,KAAK,IAAI,CAAC;IACtF,oFAAoF;IACpF,WAAW,CAAC,EAAE,CACZ,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,+BAA+B,KACrC,SAAS,CAAC;IACf,yEAAyE;IACzE,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,SAAS,CAAC;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAiCF,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,EAC5B,MAAW,EACX,SAAc,EACd,IAAI,EAAE,QAAQ,EACd,WAAqB,EACrB,YAAY,EACZ,IAAI,EAAE,QAAQ,EACd,WAAW,EACX,YAAY,EACZ,KAA0C,EAC1C,YAAgB,EAChB,SAAa,EACb,OAAY,EACZ,MAAM,EACN,QAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,WAAW,EACX,eAAsB,EACtB,eAAsB,EACtB,eAAe,EACf,cAA0B,EAC1B,YAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,SAAS,GACV,EAAE,kBAAkB,+BA0WpB"}
@@ -1,14 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useMemo, useRef, useState, } from "react";
2
+ import { useEffect, useMemo, useRef, useState, } from "react";
3
3
  import { cn } from "../lib/cn";
4
4
  import { expandVisibleEvents } from "../lib/rrule";
5
5
  import { useControllableState } from "../lib/use-controllable-state";
6
- import { addDays, addMonths, agendaDays, DEFAULT_SCHEDULER_PREFERENCES, eventCanDrag, eventCanResize, eventColorStyle, filterWeekendDays, formatDateSpan, formatDayHeading, formatHour, formatMonthYear, formatTime, formatWeekRange, getMonthGrid, getWeekDays, hoursInView, isMonthBar, isSameDay, isSameMonth, isoDay, layoutTimedEvents, normalizeEvents, occupiesDay, occurrenceKey, resizeEvent, shiftByDays, startOfDay, timedEventsOnDay, toDate, visibleEvents, weekNumber, weekSpanLanesForDays, } from "../lib/scheduler";
6
+ import { addDays, addMonths, agendaDays, calendarVisibleRange, CALENDAR_AGENDA_DAYS, DEFAULT_SCHEDULER_PREFERENCES, eventCanDrag, eventCanResize, eventColorStyle, filterWeekendDays, formatDateSpan, formatDayHeading, formatHour, formatMonthYear, formatTime, formatWeekRange, getMonthGrid, getWeekDays, hoursInView, isMonthBar, isSameDay, isSameMonth, isoDay, layoutTimedEvents, normalizeEvents, occupiesDay, occurrenceKey, resizeEvent, shiftByDays, startOfDay, timedEventsOnDay, toDate, visibleEvents, weekNumber, weekSpanLanesForDays, } from "../lib/scheduler";
7
7
  import { EventEditor } from "./EventEditor";
8
- import { CALENDAR_VIEW_LABEL, EventResizeHandle, ResourceLegend, SchedulerPreferencesMenu, SchedulerShell, SchedulerToolbar, } from "./scheduler-ui";
8
+ import { CALENDAR_VIEW_LABEL, EventResizeHandle, ResourceLegend, SchedulerDateJump, SchedulerPreferencesMenu, SchedulerShell, SchedulerToolbar, } from "./scheduler-ui";
9
9
  import { DropdownMenuItem } from "../primitives/DropdownMenu";
10
10
  const MAX_TIMED_IN_CELL = 3;
11
- const AGENDA_LENGTH = 14;
12
11
  function chunkWeeks(items) {
13
12
  const weeks = [];
14
13
  for (let i = 0; i < items.length; i += 7)
@@ -22,22 +21,6 @@ function startOfToday() {
22
21
  const now = new Date();
23
22
  return new Date(now.getFullYear(), now.getMonth(), now.getDate());
24
23
  }
25
- function visibleRange(view, date, weekStartsOn) {
26
- if (view === "month") {
27
- const grid = getMonthGrid(date, weekStartsOn);
28
- return { start: grid[0], end: addDays(grid[grid.length - 1], 1) };
29
- }
30
- if (view === "week") {
31
- const days = getWeekDays(date, weekStartsOn);
32
- return { start: days[0], end: addDays(days[6], 1) };
33
- }
34
- if (view === "agenda") {
35
- const days = agendaDays(date, AGENDA_LENGTH);
36
- return { start: days[0], end: addDays(days[days.length - 1], 1) };
37
- }
38
- const start = startOfDay(date);
39
- return { start, end: addDays(start, 1) };
40
- }
41
24
  function draftFromSource(source) {
42
25
  return {
43
26
  id: source.id,
@@ -52,7 +35,7 @@ function draftFromSource(source) {
52
35
  };
53
36
  }
54
37
  /** Month / week / day / agenda calendar with editor, resize, recurrence, and preferences. */
55
- export function EventCalendar({ events = [], resources = [], view: viewProp, defaultView = "month", onViewChange, date: dateProp, defaultDate, onDateChange, views = ["month", "week", "day", "agenda"], weekStartsOn = 0, hourStart = 7, hourEnd = 21, locale, readOnly = false, areEventsDraggable, areEventsResizable, preferences, defaultPreferences, onPreferencesChange, onEventClick, onEventChange, onEventCreate, onEventDelete, onSlotClick, showEventEditor = true, showPreferences = true, toolbarTrailing, renderEvent, renderToolbar, className, }) {
38
+ export function EventCalendar({ events = [], resources = [], view: viewProp, defaultView = "month", onViewChange, date: dateProp, defaultDate, onDateChange, views = ["month", "week", "day", "agenda"], weekStartsOn = 0, hourStart = 7, hourEnd = 21, locale, readOnly = false, areEventsDraggable, areEventsResizable, preferences, defaultPreferences, onPreferencesChange, onEventClick, onEventChange, onEventCreate, onEventDelete, onSlotClick, showEventEditor = true, showPreferences = true, toolbarTrailing, toolbarDensity = "default", showDateJump = false, yearOptions, onVisibleRangeChange, renderEvent, renderToolbar, className, }) {
56
39
  const [view, setView] = useControllableState({
57
40
  prop: viewProp,
58
41
  defaultProp: defaultView,
@@ -82,7 +65,10 @@ export function EventCalendar({ events = [], resources = [], view: viewProp, def
82
65
  const canDrag = !readOnly && (areEventsDraggable ?? Boolean(onEventChange));
83
66
  const canResize = !readOnly && (areEventsResizable ?? Boolean(onEventChange));
84
67
  const editorLocked = readOnly || Boolean(draft?.id && sourceEvent(events, draft.id)?.readOnly);
85
- const range = useMemo(() => visibleRange(resolvedView, resolvedDate, startOn), [resolvedView, resolvedDate, startOn]);
68
+ const range = useMemo(() => calendarVisibleRange(resolvedView, resolvedDate, startOn), [resolvedView, resolvedDate, startOn]);
69
+ useEffect(() => {
70
+ onVisibleRangeChange?.({ start: range.start, end: range.end, view: resolvedView });
71
+ }, [range.start, range.end, resolvedView, onVisibleRangeChange]);
86
72
  const normalized = useMemo(() => {
87
73
  const visible = visibleEvents(normalizeEvents(events, resources), hiddenIds);
88
74
  return expandVisibleEvents(visible, range.start, range.end, events);
@@ -252,7 +238,7 @@ export function EventCalendar({ events = [], resources = [], view: viewProp, def
252
238
  onToday: () => setDate(new Date()),
253
239
  onDateChange: (next) => setDate(next),
254
240
  onPreferencesChange: (next) => setPrefs(next),
255
- })) : (_jsx(SchedulerToolbar, { title: title, onPrev: () => go(-1), onNext: () => go(1), onToday: () => setDate(new Date()), menuLabel: CALENDAR_VIEW_LABEL[resolvedView], menu: views.map((item) => (_jsx(DropdownMenuItem, { onClick: () => setView(item), children: CALENDAR_VIEW_LABEL[item] }, item))), trailing: _jsxs(_Fragment, { children: [toolbarTrailing, showPreferences ? (_jsx(SchedulerPreferencesMenu, { value: resolvedPrefs, onChange: (next) => setPrefs(next) })) : null] }) })), resolvedView === "month" ? (_jsx(MonthGrid, { date: resolvedDate, today: today, events: normalized, weekStartsOn: startOn, showWeekends: resolvedPrefs.showWeekends, showWeekNumber: resolvedPrefs.showWeekNumber, locale: locale, hour12: hour12, onSlotClick: openSlot, renderEventTrigger: renderEventTrigger })) : resolvedView === "agenda" ? (_jsx(AgendaList, { date: resolvedDate, events: normalized, showWeekends: resolvedPrefs.showWeekends, locale: locale, hour12: hour12, onSlotClick: openSlot, renderEventTrigger: renderEventTrigger })) : (_jsx(TimeGrid, { date: resolvedDate, today: today, events: normalized, view: resolvedView === "day" ? "day" : "week", weekStartsOn: startOn, showWeekends: resolvedPrefs.showWeekends, hourStart: hourStart, hourEnd: hourEnd, locale: locale, hour12: hour12, onSlotClick: openSlot, renderEventTrigger: renderEventTrigger })), _jsx(ResourceLegend, { resources: resources, hiddenIds: hiddenIds, onToggle: toggleResource }), showEventEditor ? (_jsx(EventEditor, { open: draft != null, onOpenChange: (open) => {
241
+ })) : (_jsx(SchedulerToolbar, { title: title, density: toolbarDensity, onPrev: () => go(-1), onNext: () => go(1), onToday: () => setDate(new Date()), menuLabel: CALENDAR_VIEW_LABEL[resolvedView], menu: views.map((item) => (_jsx(DropdownMenuItem, { onClick: () => setView(item), children: CALENDAR_VIEW_LABEL[item] }, item))), dateJump: showDateJump ? (_jsx(SchedulerDateJump, { date: resolvedDate, locale: locale, yearOptions: yearOptions, onDateChange: (next) => setDate(next) })) : null, trailing: _jsxs(_Fragment, { children: [toolbarTrailing, showPreferences ? (_jsx(SchedulerPreferencesMenu, { value: resolvedPrefs, onChange: (next) => setPrefs(next) })) : null] }) })), resolvedView === "month" ? (_jsx(MonthGrid, { date: resolvedDate, today: today, events: normalized, weekStartsOn: startOn, showWeekends: resolvedPrefs.showWeekends, showWeekNumber: resolvedPrefs.showWeekNumber, locale: locale, hour12: hour12, onSlotClick: openSlot, renderEventTrigger: renderEventTrigger })) : resolvedView === "agenda" ? (_jsx(AgendaList, { date: resolvedDate, events: normalized, showWeekends: resolvedPrefs.showWeekends, locale: locale, hour12: hour12, onSlotClick: openSlot, renderEventTrigger: renderEventTrigger })) : (_jsx(TimeGrid, { date: resolvedDate, today: today, events: normalized, view: resolvedView === "day" ? "day" : "week", weekStartsOn: startOn, showWeekends: resolvedPrefs.showWeekends, hourStart: hourStart, hourEnd: hourEnd, locale: locale, hour12: hour12, onSlotClick: openSlot, renderEventTrigger: renderEventTrigger })), _jsx(ResourceLegend, { resources: resources, hiddenIds: hiddenIds, onToggle: toggleResource }), showEventEditor ? (_jsx(EventEditor, { open: draft != null, onOpenChange: (open) => {
256
242
  if (!open)
257
243
  setDraft(null);
258
244
  }, draft: draft, resources: resources, readOnly: editorLocked, onSave: (event) => {
@@ -286,8 +272,8 @@ function MonthGrid({ date, today, events, weekStartsOn, showWeekends, showWeekNu
286
272
  start: day,
287
273
  end: addDays(day, 1),
288
274
  allDay: true,
289
- }), className: cn("flex size-7 items-center justify-center rounded-full text-xs font-bold", isToday && "bg-primary text-primary-foreground", !isToday && inMonth && "text-foreground hover:bg-muted/50", !isToday && !inMonth && "text-muted-foreground/70"), children: day.getDate() }) }, day.toISOString()));
290
- }) }), lanes.map((lane, laneIndex) => (_jsx("div", { className: "grid gap-px px-0.5 pb-0.5", style: gridStyle, children: laneSlots(lane, columns).map((slot, slotIndex) => slot.kind === "empty" ? (_jsx("div", {}, slotIndex)) : (_jsx("div", { className: "min-w-0", style: { gridColumn: `span ${slot.span}` }, children: renderEventTrigger(slot.event, "flex h-5 w-full items-center truncate rounded-md px-1.5 text-[11px] font-semibold leading-none", slot.event.title, { variant: "month-bar" }) }, occurrenceKey(slot.event)))) }, laneIndex))), _jsx("div", { className: "grid min-h-[4.25rem]", style: gridStyle, children: days.map((day) => {
275
+ }), className: cn("flex size-7 items-center justify-center rounded-full text-xs font-bold", isToday && "bg-primary text-primary-foreground", !isToday && inMonth && "text-foreground hover:bg-muted/50", !isToday && !inMonth && "text-muted-foreground"), children: day.getDate() }) }, day.toISOString()));
276
+ }) }), lanes.map((lane, laneIndex) => (_jsx("div", { className: "grid gap-px px-0.5 pb-0.5", style: gridStyle, children: laneSlots(lane, columns).map((slot, slotIndex) => slot.kind === "empty" ? (_jsx("div", {}, slotIndex)) : (_jsx("div", { className: "min-w-0", style: { gridColumn: `span ${slot.span}` }, children: renderEventTrigger(slot.event, "flex min-h-6 w-full items-center truncate rounded-md px-1.5 text-[11px] font-semibold leading-none", slot.event.title, { variant: "month-bar" }) }, occurrenceKey(slot.event)))) }, laneIndex))), _jsx("div", { className: "grid min-h-[4.25rem]", style: gridStyle, children: days.map((day) => {
291
277
  const timed = timedEventsOnDay(events, day);
292
278
  const visibleTimed = timed.slice(0, MAX_TIMED_IN_CELL);
293
279
  const extra = timed.length - visibleTimed.length;
@@ -299,7 +285,7 @@ function MonthGrid({ date, today, events, weekStartsOn, showWeekends, showWeekNu
299
285
  end: new Date(day.getFullYear(), day.getMonth(), day.getDate(), 10),
300
286
  allDay: false,
301
287
  });
302
- }, children: [visibleTimed.map((event) => (_jsx("div", { className: "min-w-0", children: renderEventTrigger(event, "flex w-full min-w-0 items-center gap-1 rounded-sm px-0.5 py-0.5 text-left text-[11px] leading-tight text-foreground hover:bg-muted/40", _jsxs(_Fragment, { children: [_jsx("span", { className: "size-1.5 shrink-0 rounded-full", style: eventColorStyle(event.color, "dot") }), _jsx("span", { className: "shrink-0 text-muted-foreground", children: formatTime(event.start, locale, hour12) }), _jsx("span", { className: "min-w-0 truncate font-medium", children: event.title })] }), { variant: "month-timed" }) }, occurrenceKey(event)))), extra > 0 ? (_jsxs("p", { className: "px-0.5 text-[10px] font-bold text-muted-foreground", children: ["+", extra, " more"] })) : null] }, day.toISOString()));
288
+ }, children: [visibleTimed.map((event) => (_jsx("div", { className: "min-w-0", children: renderEventTrigger(event, "flex min-h-6 w-full min-w-0 items-center gap-1 rounded-sm px-0.5 py-0.5 text-left text-[11px] leading-tight text-foreground hover:bg-muted/40", _jsxs(_Fragment, { children: [_jsx("span", { className: "size-1.5 shrink-0 rounded-full", style: eventColorStyle(event.color, "dot") }), _jsx("span", { className: "shrink-0 text-muted-foreground", children: formatTime(event.start, locale, hour12) }), _jsx("span", { className: "min-w-0 truncate font-medium", children: event.title })] }), { variant: "month-timed" }) }, occurrenceKey(event)))), extra > 0 ? (_jsxs("p", { className: "px-0.5 text-[10px] font-bold text-muted-foreground", children: ["+", extra, " more"] })) : null] }, day.toISOString()));
303
289
  }) })] })] }, week[0].toISOString()));
304
290
  }) })] }));
305
291
  }
@@ -357,7 +343,7 @@ function TimeGrid({ date, today, events, view, weekStartsOn, showWeekends, hourS
357
343
  })] }), showNow && nowTop > 0 && nowTop < hours.length * hourHeight ? (_jsx("div", { className: "pointer-events-none absolute right-0 left-14 z-10 h-px bg-destructive", style: { top: nowTop }, children: _jsx("span", { className: "absolute -top-1 -left-1 size-2 rounded-full bg-destructive" }) })) : null] })] }));
358
344
  }
359
345
  function AgendaList({ date, events, showWeekends, locale, hour12, onSlotClick, renderEventTrigger, }) {
360
- const days = filterWeekendDays(agendaDays(date, AGENDA_LENGTH), showWeekends);
346
+ const days = filterWeekendDays(agendaDays(date, CALENDAR_AGENDA_DAYS), showWeekends);
361
347
  return (_jsx("div", { className: "divide-y divide-border/50", children: days.map((day) => {
362
348
  const items = events.filter((event) => occupiesDay(event, day));
363
349
  return (_jsxs("div", { className: "grid grid-cols-[7.5rem_minmax(0,1fr)] gap-3 px-3 py-3 sm:px-4", children: [_jsxs("button", { type: "button", "data-scheduler-day": isoDay(day), className: "text-left", onClick: () => onSlotClick?.({
@@ -2,7 +2,7 @@ import * as React from "react";
2
2
  import { type VariantProps } from "class-variance-authority";
3
3
  declare const glassCardVariants: (props?: ({
4
4
  variant?: "default" | "menu" | "header" | "panel" | "subtle" | "app" | null | undefined;
5
- padding?: "none" | "sm" | "lg" | "md" | null | undefined;
5
+ padding?: "none" | "sm" | "md" | "lg" | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  export type GlassCardProps = React.ComponentProps<"div"> & VariantProps<typeof glassCardVariants>;
8
8
  /**
@@ -5,9 +5,6 @@ export type RichTextEditorProps = {
5
5
  className?: string;
6
6
  minHeightClassName?: string;
7
7
  };
8
- /**
9
- * Lightweight rich-text surface (contenteditable) for notes and captions.
10
- * Pair with TipTap or another full editor in your app when you need tables or advanced media.
11
- */
8
+ /** @deprecated Use `SpatikaEditor` for full rich text editing with Tiptap. */
12
9
  export declare function RichTextEditor({ value, onChange, placeholder, className, minHeightClassName, }: RichTextEditorProps): import("react").JSX.Element;
13
10
  //# sourceMappingURL=RichTextEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextEditor.d.ts","sourceRoot":"","sources":["../../src/composites/RichTextEditor.tsx"],"names":[],"mappings":"AAWA,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAC7B,KAAU,EACV,QAAQ,EACR,WAAgC,EAChC,SAAS,EACT,kBAA+B,GAChC,EAAE,mBAAmB,+BAyErB"}
1
+ {"version":3,"file":"RichTextEditor.d.ts","sourceRoot":"","sources":["../../src/composites/RichTextEditor.tsx"],"names":[],"mappings":"AAMA,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,EAC7B,KAAU,EACV,QAAQ,EACR,WAAgC,EAChC,SAAS,EACT,kBAA+B,GAChC,EAAE,mBAAmB,+BAiBrB"}
@@ -1,23 +1,16 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useRef } from "react";
3
- import { Bold, Italic, List, ListOrdered, Underline as UnderlineIcon, } from "lucide-react";
4
- import { cn } from "../lib/cn";
5
- import { Button } from "../primitives/Button";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
6
2
  /**
7
- * Lightweight rich-text surface (contenteditable) for notes and captions.
8
- * Pair with TipTap or another full editor in your app when you need tables or advanced media.
3
+ * @deprecated Use `SpatikaEditor` from `@spatika/react` instead.
4
+ * Import `@spatika/editor/styles.css` alongside `@spatika/tokens/styles.css`.
9
5
  */
6
+ import { SpatikaEditor } from "@spatika/editor";
7
+ /** @deprecated Use `SpatikaEditor` for full rich text editing with Tiptap. */
10
8
  export function RichTextEditor({ value = "", onChange, placeholder = "Write something…", className, minHeightClassName = "min-h-40", }) {
11
- const ref = useRef(null);
12
- useEffect(() => {
13
- if (ref.current && value !== ref.current.innerHTML) {
14
- ref.current.innerHTML = value;
15
- }
16
- }, [value]);
17
- const exec = (command) => {
18
- document.execCommand(command);
19
- onChange?.(ref.current?.innerHTML ?? "");
20
- ref.current?.focus();
21
- };
22
- return (_jsxs("div", { "data-slot": "rich-text-editor", className: cn("overflow-hidden rounded-[var(--radius-card)] border border-border/50 bg-input-background", className), children: [_jsxs("div", { className: "flex flex-wrap gap-1 border-b border-border/40 bg-muted/30 p-1.5", children: [_jsx(Button, { type: "button", variant: "ghost", size: "icon", "aria-label": "Bold", onClick: () => exec("bold"), children: _jsx(Bold, { className: "size-4" }) }), _jsx(Button, { type: "button", variant: "ghost", size: "icon", "aria-label": "Italic", onClick: () => exec("italic"), children: _jsx(Italic, { className: "size-4" }) }), _jsx(Button, { type: "button", variant: "ghost", size: "icon", "aria-label": "Underline", onClick: () => exec("underline"), children: _jsx(UnderlineIcon, { className: "size-4" }) }), _jsx(Button, { type: "button", variant: "ghost", size: "icon", "aria-label": "Bullet list", onClick: () => exec("insertUnorderedList"), children: _jsx(List, { className: "size-4" }) }), _jsx(Button, { type: "button", variant: "ghost", size: "icon", "aria-label": "Numbered list", onClick: () => exec("insertOrderedList"), children: _jsx(ListOrdered, { className: "size-4" }) })] }), _jsx("div", { ref: ref, role: "textbox", "aria-multiline": "true", contentEditable: true, suppressContentEditableWarning: true, "data-placeholder": placeholder, className: cn("px-3 py-2 text-sm outline-none empty:before:text-muted-foreground empty:before:content-[attr(data-placeholder)]", minHeightClassName), onInput: () => onChange?.(ref.current?.innerHTML ?? "") })] }));
9
+ return (_jsx(SpatikaEditor, { value: value, onChange: (html) => onChange?.(html), placeholder: placeholder, className: className, heightClassName: minHeightClassName, toolbar: {
10
+ layout: "compact",
11
+ textStyle: false,
12
+ alignment: false,
13
+ insert: false,
14
+ ai: false,
15
+ } }));
23
16
  }
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import { type VariantProps } from "class-variance-authority";
3
3
  declare const surfaceCardVariants: (props?: ({
4
- tone?: "secondary" | "primary" | "detail" | "tertiary" | null | undefined;
4
+ tone?: "primary" | "secondary" | "detail" | "tertiary" | null | undefined;
5
5
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
6
  export type SurfaceCardProps = React.ComponentProps<"div"> & VariantProps<typeof surfaceCardVariants>;
7
7
  /**
@@ -1,8 +1,8 @@
1
1
  import * as React from "react";
2
2
  import { type VariantProps } from "class-variance-authority";
3
3
  declare const tagVariants: (props?: ({
4
- variant?: "blue" | "cyan" | "green" | "orange" | "purple" | "red" | "default" | "outline" | "primary" | "muted" | null | undefined;
5
- size?: "sm" | "lg" | "md" | null | undefined;
4
+ variant?: "blue" | "cyan" | "green" | "orange" | "purple" | "red" | "default" | "primary" | "muted" | "outline" | null | undefined;
5
+ size?: "sm" | "md" | "lg" | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  export type TagProps = React.ComponentProps<"span"> & VariantProps<typeof tagVariants>;
8
8
  /** Static label pill for skills, tech stacks, and metadata. */
@@ -1,4 +1,6 @@
1
+ import { type ReactNode } from "react";
1
2
  import { type BoxPlotStats, type ChartAxisConfig, type ChartCurve, type ChartMargin } from "../lib/charts";
3
+ import { type ChartItemEvent, type ChartMarkRenderContext, type ChartReferenceLine, type ChartTooltipRenderer } from "./chart-interaction";
2
4
  import { type ScatterRenderer } from "../lib/webgl-scatter";
3
5
  export type { ScatterRenderer };
4
6
  export type NumericSeries = {
@@ -7,6 +9,8 @@ export type NumericSeries = {
7
9
  data?: Array<number | null>;
8
10
  dataKey?: string;
9
11
  color?: string;
12
+ /** Per-category colors; each entry falls back to `color`. */
13
+ itemColors?: Array<string | null | undefined>;
10
14
  stack?: string;
11
15
  area?: boolean;
12
16
  curve?: ChartCurve;
@@ -32,6 +36,12 @@ export type CartesianChartProps = {
32
36
  highlightScope?: import("../lib/charts").HighlightScope;
33
37
  animated?: boolean;
34
38
  locale?: string;
39
+ fillHeight?: boolean;
40
+ onItemClick?: (event: ChartItemEvent) => void;
41
+ renderTooltip?: ChartTooltipRenderer;
42
+ renderMark?: (ctx: ChartMarkRenderContext) => ReactNode;
43
+ referenceLines?: ChartReferenceLine[];
44
+ showLabels?: boolean;
35
45
  };
36
46
  export type BarChartProps = CartesianChartProps & {
37
47
  layout?: "vertical" | "horizontal";
@@ -59,8 +69,8 @@ export type ScatterSeries = {
59
69
  color?: string;
60
70
  data: ScatterPoint[];
61
71
  };
62
- export declare function BarChart({ xAxis, yAxis, series, dataset, height, width, layout, stacked, borderRadius, colors, hideLegend, hideGrid, margin, className, barGapRatio, zoom, onZoomChange, showToolbar, highlightScope, animated, locale, }: BarChartProps): import("react").JSX.Element;
63
- export declare function LineChart({ xAxis, yAxis, series, dataset, height, width, colors, hideLegend, hideGrid, margin, className, curve, area, showMark, stacked, zoom, onZoomChange, showToolbar, highlightScope, animated, locale, }: LineChartProps): import("react").JSX.Element;
72
+ export declare function BarChart({ xAxis, yAxis, series, dataset, height, width, layout, stacked, borderRadius, colors, hideLegend, hideGrid, margin, className, barGapRatio, zoom, onZoomChange, showToolbar, highlightScope, animated, locale, fillHeight, onItemClick, renderTooltip, renderMark, referenceLines, showLabels, }: BarChartProps): import("react").JSX.Element;
73
+ export declare function LineChart({ xAxis, yAxis, series, dataset, height, width, colors, hideLegend, hideGrid, margin, className, curve, area, showMark, stacked, zoom, onZoomChange, showToolbar, highlightScope, animated, locale, fillHeight, onItemClick, renderTooltip, renderMark, referenceLines, }: LineChartProps): import("react").JSX.Element;
64
74
  export declare function AreaChart(props: LineChartProps): import("react").JSX.Element;
65
75
  export type SparkLineChartProps = {
66
76
  data: number[];
@@ -1 +1 @@
1
- {"version":3,"file":"cartesian-charts.d.ts","sourceRoot":"","sources":["../../src/composites/cartesian-charts.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cartesian-charts.d.ts","sourceRoot":"","sources":["../../src/composites/cartesian-charts.tsx"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { useCallback, useState } from "react";
3
3
  import { areaPath, bandScale, boxPlotStats, chartColor, extent, formatChartNumber, linePath, linearScale, niceTicks, pointScale, rangeAreaPath, roundedRectPath, stackSeries, waterfallBars, } from "../lib/charts";
4
4
  import { CartesianGrid, CategoryAxis, ChartFrame, ValueAxis, categoryLabels, formatSeriesValue, seriesMeta, useChartHover, useHiddenSeries, } from "./chart-ui";
5
5
  import { ChartContainer } from "./chart-composition";
6
+ import { bindChartMark, seriesItemColor, } from "./chart-interaction";
6
7
  import { ScatterWebGLLayer } from "./ScatterWebGL";
7
8
  import { nearestScatterHit, shouldUseWebGL, svgPointerPosition, } from "../lib/webgl-scatter";
8
9
  function box(width, height, m) {
@@ -68,14 +69,14 @@ function CartesianShell({ slot, ariaLabel, series, colors, hideLegend, hideGrid,
68
69
  return (_jsxs("svg", { width: w, height: h, viewBox: `0 0 ${w} ${h}`, children: [hideGrid ? null : (_jsx(CartesianGrid, { ticks: ticks, scale: yAt, left: plot.left, right: plot.right, top: plot.top, bottom: plot.bottom })), yAxis?.[0]?.hide ? null : _jsx(ValueAxis, { ticks: ticks, scale: yAt, left: plot.left }), xAxis?.[0]?.hide ? null : (_jsx(CategoryAxis, { labels: categories, position: xAt, y: plot.bottom })), children({ plot, xAt, yAt, bandwidth, ticks, hidden, meta, setHover, clear })] }));
69
70
  } }));
70
71
  }
71
- export function BarChart({ xAxis, yAxis, series, dataset, height, width, layout = "vertical", stacked = false, borderRadius = 6, colors, hideLegend, hideGrid, margin, className, barGapRatio = 0.15, zoom, onZoomChange, showToolbar, highlightScope, animated, locale, }) {
72
+ export function BarChart({ xAxis, yAxis, series, dataset, height, width, layout = "vertical", stacked = false, borderRadius = 6, colors, hideLegend, hideGrid, margin, className, barGapRatio = 0.15, zoom, onZoomChange, showToolbar, highlightScope, animated, locale, fillHeight, onItemClick, renderTooltip, renderMark, referenceLines, showLabels, }) {
72
73
  const meta = seriesMeta(series, colors);
73
74
  if (layout === "horizontal") {
74
- return (_jsx(HorizontalBarChart, { xAxis: xAxis, yAxis: yAxis, series: series, height: height, width: width, stacked: stacked, borderRadius: borderRadius, colors: colors, hideLegend: hideLegend, hideGrid: hideGrid, margin: margin, className: className, barGapRatio: barGapRatio }));
75
+ return (_jsx(HorizontalBarChart, { xAxis: xAxis, yAxis: yAxis, series: series, height: height, width: width, stacked: stacked, borderRadius: borderRadius, colors: colors, hideLegend: hideLegend, hideGrid: hideGrid, margin: margin, className: className, barGapRatio: barGapRatio, fillHeight: fillHeight, onItemClick: onItemClick, renderTooltip: renderTooltip, showLabels: showLabels }));
75
76
  }
76
- return (_jsx(ChartContainer, { slot: "bar-chart", "aria-label": `Bar chart of ${meta.map((s) => s.label).join(", ")}`, className: className, width: width, height: height, margin: margin, dataset: dataset, xAxis: xAxis, yAxis: yAxis, series: series.map((item) => ({ ...item, type: "bar" })), colors: colors, hideLegend: hideLegend, hideGrid: hideGrid, stacked: stacked, barGapRatio: barGapRatio, borderRadius: borderRadius, zoom: zoom, onZoomChange: onZoomChange, showToolbar: showToolbar, highlightScope: highlightScope, animated: animated, locale: locale }));
77
+ return (_jsx(ChartContainer, { slot: "bar-chart", "aria-label": `Bar chart of ${meta.map((s) => s.label).join(", ")}`, className: className, width: width, height: height, margin: margin, dataset: dataset, xAxis: xAxis, yAxis: yAxis, series: series.map((item) => ({ ...item, type: "bar" })), colors: colors, hideLegend: hideLegend, hideGrid: hideGrid, stacked: stacked, barGapRatio: barGapRatio, borderRadius: borderRadius, zoom: zoom, onZoomChange: onZoomChange, showToolbar: showToolbar, highlightScope: highlightScope, animated: animated, locale: locale, fillHeight: fillHeight, onItemClick: onItemClick, renderTooltip: renderTooltip, renderMark: renderMark, referenceLines: referenceLines, showLabels: showLabels }));
77
78
  }
78
- function HorizontalBarChart({ xAxis, yAxis, series, height, width, stacked, borderRadius = 6, colors, hideLegend, hideGrid, margin, className, barGapRatio = 0.15, }) {
79
+ function HorizontalBarChart({ xAxis, yAxis, series, height, width, stacked, borderRadius = 6, colors, hideLegend, hideGrid, margin, className, barGapRatio = 0.15, fillHeight, onItemClick, renderTooltip, showLabels, }) {
79
80
  const categories = categoryLabels(xAxis?.[0], series[0]?.data?.length ?? 0);
80
81
  const domain = numericDomain(series, Boolean(stacked), yAxis?.[0]);
81
82
  const meta = seriesMeta(series, colors);
@@ -84,7 +85,7 @@ function HorizontalBarChart({ xAxis, yAxis, series, height, width, stacked, bord
84
85
  const { hover, setHover, clear } = useChartHover();
85
86
  const ticks = niceTicks(domain[0], domain[1], 5);
86
87
  const stacks = stacked ? stackSeries(series.map((item) => (item.data ?? []).map((v) => v ?? 0))) : null;
87
- return (_jsx(ChartFrame, { slot: "bar-chart", className: className, width: width, height: height, margin: margin ?? { top: 16, right: 16, bottom: 28, left: 72 }, legend: hideLegend ? undefined : meta, hiddenIds: hidden, onToggleSeries: toggle, hover: hover, "aria-label": `Bar chart of ${meta.map((s) => s.label).join(", ")}`, children: ({ width: w, height: h, m }) => {
88
+ return (_jsx(ChartFrame, { slot: "bar-chart", className: className, width: width, height: height, fillHeight: fillHeight, margin: margin ?? { top: 16, right: showLabels ? 48 : 16, bottom: 28, left: 72 }, legend: hideLegend ? undefined : meta, hiddenIds: hidden, onToggleSeries: toggle, hover: hover, renderTooltip: renderTooltip, "aria-label": `Bar chart of ${meta.map((s) => s.label).join(", ")}`, children: ({ width: w, height: h, m }) => {
88
89
  const plot = box(w, h, m);
89
90
  const xAt = linearScale(domain, [plot.left, plot.right]);
90
91
  const yScale = bandScale(categories.map(String), [plot.top, plot.bottom], 0.24);
@@ -119,17 +120,30 @@ function HorizontalBarChart({ xAxis, yAxis, series, height, width, stacked, bord
119
120
  }
120
121
  const x = Math.min(x1, x2);
121
122
  const barW = Math.max(1, Math.abs(x2 - x1));
122
- return (_jsx("path", { className: "spk-chart-mark", d: roundedRectPath(x, y, barW, stacked ? yScale.bandwidth : barH, borderRadius), fill: info.color, onMouseEnter: (event) => setHover({
123
- x: event.nativeEvent.offsetX,
124
- y: event.nativeEvent.offsetY,
125
- title: String(categories[i]),
126
- items: [{ color: info.color, label: info.label, value: formatSeriesValue(value) }],
127
- }), onMouseLeave: clear }, `${info.id}-${i}`));
123
+ const color = seriesItemColor(info.color, item.itemColors, i);
124
+ const event = {
125
+ seriesId: info.id,
126
+ seriesLabel: info.label,
127
+ dataIndex: i,
128
+ category: categories[i] ?? i,
129
+ value,
130
+ color,
131
+ };
132
+ return (_jsxs("g", { children: [_jsx("path", { d: roundedRectPath(x, y, barW, stacked ? yScale.bandwidth : barH, borderRadius), fill: color, ...bindChartMark({
133
+ event,
134
+ hover: {
135
+ title: String(categories[i]),
136
+ items: [{ color, label: info.label, value: formatSeriesValue(value) }],
137
+ },
138
+ onItemClick,
139
+ setHover,
140
+ clearHover: clear,
141
+ }) }), showLabels ? (_jsx("text", { className: "spk-chart-label", x: Math.max(x1, x2) + 6, y: y + (stacked ? yScale.bandwidth : barH) / 2, dominantBaseline: "middle", children: formatSeriesValue(value) })) : null] }, `${info.id}-${i}`));
128
142
  });
129
143
  })] }));
130
144
  } }));
131
145
  }
132
- export function LineChart({ xAxis, yAxis, series, dataset, height, width, colors, hideLegend, hideGrid, margin, className, curve = "monotone", area = false, showMark = true, stacked = false, zoom, onZoomChange, showToolbar, highlightScope, animated, locale, }) {
146
+ export function LineChart({ xAxis, yAxis, series, dataset, height, width, colors, hideLegend, hideGrid, margin, className, curve = "monotone", area = false, showMark = true, stacked = false, zoom, onZoomChange, showToolbar, highlightScope, animated, locale, fillHeight, onItemClick, renderTooltip, renderMark, referenceLines, }) {
133
147
  const meta = seriesMeta(series, colors);
134
148
  const stackedAreas = stacked && (area || series.some((item) => item.area || item.type === "area"));
135
149
  return (_jsx(ChartContainer, { slot: area ? "area-chart" : "line-chart", "aria-label": `${area ? "Area" : "Line"} chart of ${meta.map((s) => s.label).join(", ")}`, className: className, width: width, height: height, margin: margin, dataset: dataset, xAxis: xAxis, yAxis: yAxis, series: series.map((item) => ({
@@ -137,7 +151,7 @@ export function LineChart({ xAxis, yAxis, series, dataset, height, width, colors
137
151
  type: area || item.area ? "area" : "line",
138
152
  curve: item.curve ?? curve,
139
153
  showMark: item.showMark ?? (stackedAreas ? false : showMark),
140
- })), colors: colors, hideLegend: hideLegend, hideGrid: hideGrid, stacked: stacked, zoom: zoom, onZoomChange: onZoomChange, showToolbar: showToolbar, highlightScope: highlightScope, animated: animated, locale: locale }));
154
+ })), colors: colors, hideLegend: hideLegend, hideGrid: hideGrid, stacked: stacked, zoom: zoom, onZoomChange: onZoomChange, showToolbar: showToolbar, highlightScope: highlightScope, animated: animated, locale: locale, fillHeight: fillHeight, onItemClick: onItemClick, renderTooltip: renderTooltip, renderMark: renderMark, referenceLines: referenceLines }));
141
155
  }
142
156
  export function AreaChart(props) {
143
157
  return _jsx(LineChart, { ...props, area: true });
@@ -1,12 +1,15 @@
1
1
  import { type ReactNode, type RefObject } from "react";
2
2
  import { type ChartAxisConfig, type ChartCurve, type ChartDataset, type ChartInteraction, type ChartMargin, type ChartZoom, type HighlightScope, type PlotBox } from "../lib/charts";
3
3
  import { type ChartHover } from "./chart-ui";
4
+ import { type ChartItemEvent, type ChartMarkRenderContext, type ChartReferenceLine, type ChartTooltipRenderer } from "./chart-interaction";
4
5
  export type ComposedSeriesType = "bar" | "line" | "area" | "scatter";
5
6
  export type ComposedSeries = {
6
7
  id?: string;
7
8
  type?: ComposedSeriesType;
8
9
  label?: string;
9
10
  color?: string;
11
+ /** Per-category colors; each entry falls back to `color`. */
12
+ itemColors?: Array<string | null | undefined>;
10
13
  data?: Array<number | null>;
11
14
  dataKey?: string;
12
15
  stack?: string;
@@ -25,6 +28,7 @@ type ResolvedSeries = {
25
28
  type: ComposedSeriesType;
26
29
  label: string;
27
30
  color: string;
31
+ itemColors?: Array<string | null | undefined>;
28
32
  data: Array<number | null>;
29
33
  stack?: string;
30
34
  yAxisId?: string;
@@ -86,6 +90,10 @@ type ChartContextValue = {
86
90
  x1: number;
87
91
  } | null) => void;
88
92
  exportChart: (format: "svg" | "png") => Promise<void>;
93
+ onItemClick?: (event: ChartItemEvent) => void;
94
+ renderMark?: (ctx: ChartMarkRenderContext) => ReactNode;
95
+ referenceLines?: ChartReferenceLine[];
96
+ showLabels?: boolean;
89
97
  };
90
98
  declare const ChartContext: import("react").Context<ChartContextValue | null>;
91
99
  export declare function useChartContext(): ChartContextValue;
@@ -115,8 +123,16 @@ export type ChartContainerProps = {
115
123
  locale?: string;
116
124
  children?: ReactNode;
117
125
  "aria-label"?: string;
126
+ /** When true, plot height follows the parent instead of the numeric `height`. */
127
+ fillHeight?: boolean;
128
+ onItemClick?: (event: ChartItemEvent) => void;
129
+ renderTooltip?: ChartTooltipRenderer;
130
+ renderMark?: (ctx: ChartMarkRenderContext) => ReactNode;
131
+ referenceLines?: ChartReferenceLine[];
132
+ /** Draw the numeric value at the end of each bar. */
133
+ showLabels?: boolean;
118
134
  };
119
- export declare function ChartContainer({ slot, className, width, height, margin, dataset, xAxis, yAxis, series, colors, hideLegend, hideGrid, stacked, barGapRatio, borderRadius, zoom, defaultZoom, onZoomChange, showToolbar, highlightScope, selected, animated, locale, children, "aria-label": ariaLabel, }: ChartContainerProps): import("react").JSX.Element;
135
+ export declare function ChartContainer({ slot, className, width, height, margin, dataset, xAxis, yAxis, series, colors, hideLegend, hideGrid, stacked, barGapRatio, borderRadius, zoom, defaultZoom, onZoomChange, showToolbar, highlightScope, selected, animated, locale, children, "aria-label": ariaLabel, fillHeight, onItemClick, renderTooltip, renderMark, referenceLines, showLabels, }: ChartContainerProps): import("react").JSX.Element;
120
136
  export declare function ChartSurface({ children, className }: {
121
137
  children?: ReactNode;
122
138
  className?: string;
@@ -131,6 +147,8 @@ export declare function LinePlot(): import("react").JSX.Element;
131
147
  export declare function AreaPlot(): import("react").JSX.Element;
132
148
  export declare function ScatterPlot(): import("react").JSX.Element | null;
133
149
  export declare function ChartsBrush(): import("react").JSX.Element | null;
150
+ /** Horizontal (value) or vertical (category index) guide overlay. */
151
+ export declare function ChartsReferenceLine(): import("react").JSX.Element | null;
134
152
  export declare function ChartsLegend(): import("react").JSX.Element;
135
153
  export declare function ChartsToolbar({ className }: {
136
154
  className?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"chart-composition.d.ts","sourceRoot":"","sources":["../../src/composites/chart-composition.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chart-composition.d.ts","sourceRoot":"","sources":["../../src/composites/chart-composition.tsx"],"names":[],"mappings":"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"}