@omnitron-dev/prism 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +148 -0
- package/dist/blocks/index.js +3 -1
- package/dist/blocks/index.js.map +1 -1
- package/dist/{chunk-S6SEGBX6.js → chunk-472SOF76.js} +4 -4
- package/dist/{chunk-S6SEGBX6.js.map → chunk-472SOF76.js.map} +1 -1
- package/dist/{chunk-Z5OSPAOC.js → chunk-4Z5DE5GK.js} +78 -75
- package/dist/chunk-4Z5DE5GK.js.map +1 -0
- package/dist/chunk-52PQL67Q.js +559 -0
- package/dist/chunk-52PQL67Q.js.map +1 -0
- package/dist/chunk-75FQ5IW3.js +590 -0
- package/dist/chunk-75FQ5IW3.js.map +1 -0
- package/dist/{chunk-6AHI4GSV.js → chunk-7G5D5PTC.js} +4 -3
- package/dist/chunk-7G5D5PTC.js.map +1 -0
- package/dist/chunk-BJE2AKD4.js +105 -0
- package/dist/chunk-BJE2AKD4.js.map +1 -0
- package/dist/chunk-FF5RF32O.js +248 -0
- package/dist/chunk-FF5RF32O.js.map +1 -0
- package/dist/{chunk-OBJ244BO.js → chunk-GMIE6III.js} +9 -42
- package/dist/chunk-GMIE6III.js.map +1 -0
- package/dist/chunk-GUGTDURV.js +826 -0
- package/dist/chunk-GUGTDURV.js.map +1 -0
- package/dist/chunk-HOXFSQUV.js +573 -0
- package/dist/chunk-HOXFSQUV.js.map +1 -0
- package/dist/chunk-JSQTYDPG.js +3 -0
- package/dist/chunk-JSQTYDPG.js.map +1 -0
- package/dist/{chunk-ZTATTUH7.js → chunk-KQ67XB6T.js} +213 -651
- package/dist/chunk-KQ67XB6T.js.map +1 -0
- package/dist/{chunk-WFD54GQQ.js → chunk-LOY2NPCO.js} +14 -573
- package/dist/chunk-LOY2NPCO.js.map +1 -0
- package/dist/{chunk-YQW43BDH.js → chunk-LSPFFEJT.js} +240 -1824
- package/dist/chunk-LSPFFEJT.js.map +1 -0
- package/dist/{chunk-BZOL7GMU.js → chunk-OKTLA23Q.js} +4 -4
- package/dist/chunk-OKTLA23Q.js.map +1 -0
- package/dist/chunk-PFT2BNYO.js +191 -0
- package/dist/chunk-PFT2BNYO.js.map +1 -0
- package/dist/chunk-PGHEP4JD.js +106 -0
- package/dist/chunk-PGHEP4JD.js.map +1 -0
- package/dist/chunk-PXXPLHIY.js +74 -0
- package/dist/chunk-PXXPLHIY.js.map +1 -0
- package/dist/chunk-SU3LVQ7N.js +518 -0
- package/dist/chunk-SU3LVQ7N.js.map +1 -0
- package/dist/chunk-YHE7HXSG.js +206 -0
- package/dist/chunk-YHE7HXSG.js.map +1 -0
- package/dist/cli/index.js +7 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/components/accordion/accordion.d.ts.map +1 -1
- package/dist/components/admin-filters/admin-data-table.d.ts.map +1 -1
- package/dist/components/admin-filters/filter-toolbar.d.ts.map +1 -1
- package/dist/components/date-input/date-input.d.ts +27 -0
- package/dist/components/date-input/date-input.d.ts.map +1 -0
- package/dist/components/date-input/index.d.ts +4 -0
- package/dist/components/date-input/index.d.ts.map +1 -0
- package/dist/components/date-input/value.d.ts +9 -0
- package/dist/components/date-input/value.d.ts.map +1 -0
- package/dist/components/doc-layout/doc-sidebar.d.ts +4 -1
- package/dist/components/doc-layout/doc-sidebar.d.ts.map +1 -1
- package/dist/components/doc-layout/index.js +6 -0
- package/dist/components/doc-layout/index.js.map +1 -0
- package/dist/components/editor/editor.d.ts.map +1 -1
- package/dist/components/editor/icons/index.d.ts +32 -40
- package/dist/components/editor/icons/index.d.ts.map +1 -1
- package/dist/components/editor/index.js +3 -1
- package/dist/components/error-boundary/error-boundary.d.ts.map +1 -1
- package/dist/components/index.css +4 -0
- package/dist/components/index.css.map +1 -1
- package/dist/components/index.d.ts +4 -4
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +18 -8
- package/dist/components/knowledge-graph/edge-labels.d.ts +14 -0
- package/dist/components/knowledge-graph/edge-labels.d.ts.map +1 -0
- package/dist/components/knowledge-graph/graph.d.ts +56 -0
- package/dist/components/knowledge-graph/graph.d.ts.map +1 -0
- package/dist/components/knowledge-graph/index.css +176 -0
- package/dist/components/knowledge-graph/index.css.map +1 -0
- package/dist/components/knowledge-graph/index.d.ts +3 -0
- package/dist/components/knowledge-graph/index.d.ts.map +1 -0
- package/dist/components/knowledge-graph/index.js +795 -0
- package/dist/components/knowledge-graph/index.js.map +1 -0
- package/dist/components/knowledge-graph/label-layout.d.ts +28 -0
- package/dist/components/knowledge-graph/label-layout.d.ts.map +1 -0
- package/dist/components/knowledge-graph/label-store.d.ts +15 -0
- package/dist/components/knowledge-graph/label-store.d.ts.map +1 -0
- package/dist/components/knowledge-graph/model.d.ts +92 -0
- package/dist/components/knowledge-graph/model.d.ts.map +1 -0
- package/dist/components/lightbox/lightbox.d.ts.map +1 -1
- package/dist/components/map/Map.d.ts +19 -43
- package/dist/components/map/Map.d.ts.map +1 -1
- package/dist/components/map/MapCoverageLayer.d.ts +1 -1
- package/dist/components/map/MapCoverageLayer.d.ts.map +1 -1
- package/dist/components/map/MapMarker.d.ts +1 -1
- package/dist/components/map/MapMarker.d.ts.map +1 -1
- package/dist/components/map/MapPlaceSearch.d.ts +33 -0
- package/dist/components/map/MapPlaceSearch.d.ts.map +1 -0
- package/dist/components/map/MapPointPicker.d.ts +21 -12
- package/dist/components/map/MapPointPicker.d.ts.map +1 -1
- package/dist/components/map/coordinates.d.ts +10 -0
- package/dist/components/map/coordinates.d.ts.map +1 -0
- package/dist/components/map/index.css +4 -0
- package/dist/components/map/index.css.map +1 -0
- package/dist/components/map/index.d.ts +7 -2
- package/dist/components/map/index.d.ts.map +1 -1
- package/dist/components/map/index.js +3 -0
- package/dist/components/map/index.js.map +1 -0
- package/dist/components/nav-card/nav-card.d.ts.map +1 -1
- package/dist/components/rail/rail.d.ts.map +1 -1
- package/dist/components/research/diagram-image.d.ts +11 -0
- package/dist/components/research/diagram-image.d.ts.map +1 -0
- package/dist/components/research/diagram.d.ts +8 -0
- package/dist/components/research/diagram.d.ts.map +1 -0
- package/dist/components/research/document.d.ts +33 -0
- package/dist/components/research/document.d.ts.map +1 -0
- package/dist/components/research/frontmatter.d.ts +15 -0
- package/dist/components/research/frontmatter.d.ts.map +1 -0
- package/dist/components/research/index.css +51 -0
- package/dist/components/research/index.css.map +1 -0
- package/dist/components/research/index.d.ts +3 -0
- package/dist/components/research/index.d.ts.map +1 -0
- package/dist/components/research/index.js +6 -0
- package/dist/components/research/index.js.map +1 -0
- package/dist/components/research/parse.d.ts +29 -0
- package/dist/components/research/parse.d.ts.map +1 -0
- package/dist/components/research-editor/block-commands.d.ts +20 -0
- package/dist/components/research-editor/block-commands.d.ts.map +1 -0
- package/dist/components/research-editor/block-controls.d.ts +13 -0
- package/dist/components/research-editor/block-controls.d.ts.map +1 -0
- package/dist/components/research-editor/editor.d.ts +75 -0
- package/dist/components/research-editor/editor.d.ts.map +1 -0
- package/dist/components/research-editor/extensions.d.ts +14 -0
- package/dist/components/research-editor/extensions.d.ts.map +1 -0
- package/dist/components/research-editor/index.css +332 -0
- package/dist/components/research-editor/index.css.map +1 -0
- package/dist/components/research-editor/index.d.ts +5 -0
- package/dist/components/research-editor/index.d.ts.map +1 -0
- package/dist/components/research-editor/index.js +1592 -0
- package/dist/components/research-editor/index.js.map +1 -0
- package/dist/components/research-editor/math-input.d.ts +32 -0
- package/dist/components/research-editor/math-input.d.ts.map +1 -0
- package/dist/components/research-editor/math-markup.d.ts +4 -0
- package/dist/components/research-editor/math-markup.d.ts.map +1 -0
- package/dist/components/research-editor/math-navigation.d.ts +6 -0
- package/dist/components/research-editor/math-navigation.d.ts.map +1 -0
- package/dist/components/research-editor/math-node.d.ts +11 -0
- package/dist/components/research-editor/math-node.d.ts.map +1 -0
- package/dist/components/research-editor/source.d.ts +19 -0
- package/dist/components/research-editor/source.d.ts.map +1 -0
- package/dist/components/scrollbar/scrollbar.d.ts +4 -2
- package/dist/components/scrollbar/scrollbar.d.ts.map +1 -1
- package/dist/components/search-input/search-input.d.ts +0 -10
- package/dist/components/search-input/search-input.d.ts.map +1 -1
- package/dist/components/tiptap-renderer/tiptap-renderer.d.ts +4 -3
- package/dist/components/tiptap-renderer/tiptap-renderer.d.ts.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +8 -4
- package/dist/core/provider.d.ts +7 -2
- package/dist/core/provider.d.ts.map +1 -1
- package/dist/forms/schema-provider.d.ts +3 -3
- package/dist/forms/schema-utils.d.ts +3 -3
- package/dist/hooks/index.js +9 -5
- package/dist/icons/context.d.ts +17 -0
- package/dist/icons/context.d.ts.map +1 -0
- package/dist/icons/controls.d.ts +51 -0
- package/dist/icons/controls.d.ts.map +1 -0
- package/dist/icons/index.d.ts +3 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/icons/index.js +4 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/icons/theme.d.ts +4 -0
- package/dist/icons/theme.d.ts.map +1 -0
- package/dist/index.css +4 -0
- package/dist/index.css.map +1 -1
- package/dist/index.js +24 -13
- package/dist/index.js.map +1 -1
- package/dist/layouts/core/header-section.d.ts.map +1 -1
- package/dist/layouts/dashboard/labels.d.ts +12 -0
- package/dist/layouts/dashboard/labels.d.ts.map +1 -0
- package/dist/layouts/dashboard/layout.d.ts +7 -1
- package/dist/layouts/dashboard/layout.d.ts.map +1 -1
- package/dist/layouts/dashboard/sidenav.d.ts +7 -3
- package/dist/layouts/dashboard/sidenav.d.ts.map +1 -1
- package/dist/layouts/index.d.ts +5 -0
- package/dist/layouts/index.d.ts.map +1 -1
- package/dist/layouts/index.js +6 -1
- package/dist/layouts/panel-layout.d.ts +35 -0
- package/dist/layouts/panel-layout.d.ts.map +1 -0
- package/dist/layouts/sidebar-toggle.d.ts +11 -0
- package/dist/layouts/sidebar-toggle.d.ts.map +1 -0
- package/dist/state/stores/auth.d.ts +4 -16
- package/dist/state/stores/auth.d.ts.map +1 -1
- package/dist/state/stores/ui.d.ts +7 -105
- package/dist/state/stores/ui.d.ts.map +1 -1
- package/dist/theme/components/Button.d.ts.map +1 -1
- package/dist/theme/components/FormControls.d.ts +3 -12
- package/dist/theme/components/FormControls.d.ts.map +1 -1
- package/dist/theme/components/index.d.ts.map +1 -1
- package/dist/theme/create-theme.d.ts +5 -17
- package/dist/theme/create-theme.d.ts.map +1 -1
- package/dist/theme/index.js +6 -2
- package/dist/theme/mixins.d.ts +3 -1
- package/dist/theme/mixins.d.ts.map +1 -1
- package/dist/theme/palette/overrides.d.ts +23 -0
- package/dist/theme/palette/overrides.d.ts.map +1 -0
- package/dist/ui/index.d.ts +18 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +148 -0
- package/dist/ui/index.js.map +1 -0
- package/package.json +92 -45
- package/dist/chunk-6AHI4GSV.js.map +0 -1
- package/dist/chunk-BZOL7GMU.js.map +0 -1
- package/dist/chunk-OBJ244BO.js.map +0 -1
- package/dist/chunk-WFD54GQQ.js.map +0 -1
- package/dist/chunk-YQW43BDH.js.map +0 -1
- package/dist/chunk-Z5OSPAOC.js.map +0 -1
- package/dist/chunk-ZTATTUH7.js.map +0 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme-native composition primitives. These are the original MUI components,
|
|
3
|
+
* with their complete types, keyboard behavior and slot APIs, under Prism's
|
|
4
|
+
* supported package surface. No duplicate state, styling engine or wrappers.
|
|
5
|
+
* Use createPrismTheme / PrismThemeProvider when composing a small application;
|
|
6
|
+
* use PrismProvider for the full settings/localization stack.
|
|
7
|
+
*/
|
|
8
|
+
export { Alert, Accordion, AccordionSummary, AccordionDetails, Box, Button, Card, CardActionArea, CardContent, Chip, CircularProgress, Divider, Drawer, Dialog, DialogTitle, DialogContent, DialogContentText, DialogActions, FormControl, FormControlLabel, FormLabel, FormHelperText, IconButton, InputAdornment, InputLabel, LinearProgress, Link, List, ListItem, ListItemIcon, ListItemButton, ListItemText, Menu, MenuItem, Radio, RadioGroup, Select, Skeleton, Slider, Stack, Switch, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Tab, Tabs, TextField, Tooltip, Typography, } from '@mui/material';
|
|
9
|
+
export type { ButtonProps, TextFieldProps, SliderProps, SxProps, Theme } from '@mui/material';
|
|
10
|
+
export { ThemeProvider as PrismThemeProvider, useTheme } from '@mui/material/styles';
|
|
11
|
+
export { default as useMediaQuery } from '@mui/material/useMediaQuery';
|
|
12
|
+
export { default as Breadcrumbs } from '@mui/material/Breadcrumbs';
|
|
13
|
+
export { default as SvgIcon } from '@mui/material/SvgIcon';
|
|
14
|
+
export type { SvgIconProps } from '@mui/material/SvgIcon';
|
|
15
|
+
export { PrismIconProvider, prismIconNames, type PrismIconSet, type PrismIconName, type PrismIconComponent, } from '../icons/context.js';
|
|
16
|
+
export { Scrollbar, type ScrollbarProps } from '../components/scrollbar/index.js';
|
|
17
|
+
export { PrismDatePicker, PrismTimePicker, PrismDateTimePicker, datePickerRuRU, datePickerEnUS, type PrismCalendarInputProps, } from '../components/date-input/index.js';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,KAAK,EACL,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,GAAG,EACH,MAAM,EACN,IAAI,EACJ,cAAc,EACd,WAAW,EACX,IAAI,EACJ,gBAAgB,EAChB,OAAO,EACP,MAAM,EACN,MAAM,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,UAAU,EACV,cAAc,EACd,UAAU,EACV,cAAc,EACd,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,UAAU,EACV,MAAM,EACN,QAAQ,EACR,MAAM,EACN,KAAK,EACL,MAAM,EACN,KAAK,EACL,SAAS,EACT,SAAS,EACT,cAAc,EACd,SAAS,EACT,QAAQ,EACR,GAAG,EACH,IAAI,EACJ,SAAS,EACT,OAAO,EACP,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,aAAa,IAAI,kBAAkB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElF,OAAO,EACL,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,KAAK,uBAAuB,GAC7B,MAAM,mCAAmC,CAAC"}
|
package/dist/ui/index.js
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import '../chunk-JSQTYDPG.js';
|
|
2
|
+
export { Scrollbar } from '../chunk-PXXPLHIY.js';
|
|
3
|
+
import '../chunk-HOXFSQUV.js';
|
|
4
|
+
export { PrismIconProvider, prismIconNames } from '../chunk-BJE2AKD4.js';
|
|
5
|
+
export { Accordion, AccordionDetails, AccordionSummary, Alert, Box, Button, Card, CardActionArea, CardContent, Chip, CircularProgress, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, Divider, Drawer, FormControl, FormControlLabel, FormHelperText, FormLabel, IconButton, InputAdornment, InputLabel, LinearProgress, Link, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Menu, MenuItem, Radio, RadioGroup, Select, Skeleton, Slider, Stack, Switch, Tab, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Tabs, TextField, Tooltip, Typography } from '@mui/material';
|
|
6
|
+
export { ThemeProvider as PrismThemeProvider, useTheme } from '@mui/material/styles';
|
|
7
|
+
export { default as useMediaQuery } from '@mui/material/useMediaQuery';
|
|
8
|
+
export { default as Breadcrumbs } from '@mui/material/Breadcrumbs';
|
|
9
|
+
export { default as SvgIcon } from '@mui/material/SvgIcon';
|
|
10
|
+
import 'dayjs/locale/ru.js';
|
|
11
|
+
import { useState, useCallback, useRef, useEffect } from 'react';
|
|
12
|
+
import { DatePicker } from '@mui/x-date-pickers/DatePicker';
|
|
13
|
+
import { TimePicker } from '@mui/x-date-pickers/TimePicker';
|
|
14
|
+
import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';
|
|
15
|
+
import dayjs from 'dayjs';
|
|
16
|
+
import utc from 'dayjs/plugin/utc.js';
|
|
17
|
+
import { jsx } from 'react/jsx-runtime';
|
|
18
|
+
export { enUS as datePickerEnUS, ruRU as datePickerRuRU } from '@mui/x-date-pickers/locales';
|
|
19
|
+
|
|
20
|
+
dayjs.extend(utc);
|
|
21
|
+
function calendarFormat(kind, precision = "minute") {
|
|
22
|
+
const time = precision === "second" ? "HH:mm:ss" : "HH:mm";
|
|
23
|
+
return kind === "date" ? "YYYY-MM-DD" : kind === "time" ? time : `YYYY-MM-DD[T]${time}`;
|
|
24
|
+
}
|
|
25
|
+
function parseCalendarValue(value, kind) {
|
|
26
|
+
if (value === "") return null;
|
|
27
|
+
const source = kind === "time" ? `2000-01-01T${value}` : value;
|
|
28
|
+
const pattern = kind === "date" ? /^(\d{4})-(\d{2})-(\d{2})$/ : /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2}))?$/;
|
|
29
|
+
const match = pattern.exec(source);
|
|
30
|
+
if (!match) return dayjs.utc(NaN);
|
|
31
|
+
const [, y, m, d, h = "0", minute = "0", sec = "0"] = match;
|
|
32
|
+
const date = /* @__PURE__ */ new Date(0);
|
|
33
|
+
date.setUTCFullYear(Number(y), Number(m) - 1, Number(d));
|
|
34
|
+
date.setUTCHours(Number(h), Number(minute), Number(sec), 0);
|
|
35
|
+
const second = /:\d{2}:\d{2}$/.test(value);
|
|
36
|
+
const format = calendarFormat(kind, second ? "second" : "minute");
|
|
37
|
+
const parsed = dayjs.utc(date);
|
|
38
|
+
return parsed.isValid() && parsed.format(format) === value ? parsed : dayjs.utc(NaN);
|
|
39
|
+
}
|
|
40
|
+
function formatCalendarValue(value, kind, precision) {
|
|
41
|
+
return value?.isValid() ? value.format(calendarFormat(kind, precision)) : "";
|
|
42
|
+
}
|
|
43
|
+
function CalendarInput({
|
|
44
|
+
kind,
|
|
45
|
+
value,
|
|
46
|
+
onChange,
|
|
47
|
+
label,
|
|
48
|
+
invalidText,
|
|
49
|
+
helperText,
|
|
50
|
+
name,
|
|
51
|
+
required,
|
|
52
|
+
disabled,
|
|
53
|
+
readOnly,
|
|
54
|
+
size = "medium",
|
|
55
|
+
fullWidth = true,
|
|
56
|
+
min,
|
|
57
|
+
max,
|
|
58
|
+
precision = "minute",
|
|
59
|
+
onValidityChange,
|
|
60
|
+
sx
|
|
61
|
+
}) {
|
|
62
|
+
const [draft, setDraft] = useState(() => parseCalendarValue(value, kind));
|
|
63
|
+
const [invalid, setInvalid] = useState(false);
|
|
64
|
+
const [partial, setPartial] = useState(false);
|
|
65
|
+
const captureField = useCallback((field) => {
|
|
66
|
+
if (!field) return;
|
|
67
|
+
const sections = field.getSections();
|
|
68
|
+
setPartial(sections.some((section) => section.value !== "") && sections.some((section) => section.value === ""));
|
|
69
|
+
}, []);
|
|
70
|
+
const invalidDraft = invalid || partial;
|
|
71
|
+
const published = useRef(value);
|
|
72
|
+
const input = useRef(null);
|
|
73
|
+
useEffect(() => {
|
|
74
|
+
if (published.current !== value) {
|
|
75
|
+
published.current = value;
|
|
76
|
+
setDraft(parseCalendarValue(value, kind));
|
|
77
|
+
}
|
|
78
|
+
}, [value, kind]);
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
input.current?.setCustomValidity(invalidDraft ? invalidText : "");
|
|
81
|
+
onValidityChange?.(!invalidDraft && (!required || draft !== null));
|
|
82
|
+
}, [invalidDraft, invalidText, onValidityChange, required, draft]);
|
|
83
|
+
const onValue = (next, context) => {
|
|
84
|
+
const failed = context.validationError != null || next !== null && !next.isValid();
|
|
85
|
+
setDraft(next);
|
|
86
|
+
setInvalid(failed);
|
|
87
|
+
const text = failed ? "" : formatCalendarValue(next, kind, precision);
|
|
88
|
+
published.current = text;
|
|
89
|
+
onChange(text);
|
|
90
|
+
};
|
|
91
|
+
const props = {
|
|
92
|
+
label,
|
|
93
|
+
value: draft,
|
|
94
|
+
timezone: "UTC",
|
|
95
|
+
onChange: onValue,
|
|
96
|
+
onError: (error) => setInvalid(error != null),
|
|
97
|
+
inputRef: input,
|
|
98
|
+
disabled,
|
|
99
|
+
readOnly,
|
|
100
|
+
sx,
|
|
101
|
+
slotProps: {
|
|
102
|
+
textField: {
|
|
103
|
+
name,
|
|
104
|
+
required,
|
|
105
|
+
size,
|
|
106
|
+
fullWidth,
|
|
107
|
+
error: invalidDraft,
|
|
108
|
+
helperText: invalidDraft ? invalidText : helperText
|
|
109
|
+
},
|
|
110
|
+
field: { clearable: true, fieldRef: captureField },
|
|
111
|
+
popper: {
|
|
112
|
+
modifiers: [
|
|
113
|
+
{ name: "flip", options: { rootBoundary: "viewport", padding: 8 } },
|
|
114
|
+
{
|
|
115
|
+
name: "preventOverflow",
|
|
116
|
+
// For a top/bottom placement the alternate axis is vertical. A
|
|
117
|
+
// calendar may fit the viewport but neither side of its anchor;
|
|
118
|
+
// permit overlap with the anchor rather than hiding its actions.
|
|
119
|
+
options: { rootBoundary: "viewport", padding: 8, mainAxis: true, altAxis: true, tether: false }
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
},
|
|
123
|
+
desktopPaper: {
|
|
124
|
+
sx: { maxHeight: "calc(100dvh - 16px)", maxWidth: "calc(100vw - 16px)", overflow: "auto" }
|
|
125
|
+
},
|
|
126
|
+
actionBar: { actions: ["clear", "cancel", "accept"] }
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
const lower = min ? parseCalendarValue(min, kind) ?? void 0 : void 0;
|
|
130
|
+
const upper = max ? parseCalendarValue(max, kind) ?? void 0 : void 0;
|
|
131
|
+
if (kind === "date") return /* @__PURE__ */ jsx(DatePicker, { ...props, minDate: lower, maxDate: upper });
|
|
132
|
+
const views = precision === "second" ? ["hours", "minutes", "seconds"] : ["hours", "minutes"];
|
|
133
|
+
if (kind === "time") return /* @__PURE__ */ jsx(TimePicker, { ...props, ampm: false, views: [...views], minTime: lower, maxTime: upper });
|
|
134
|
+
return /* @__PURE__ */ jsx(DateTimePicker, { ...props, ampm: false, views: ["year", "day", ...views], minDateTime: lower, maxDateTime: upper });
|
|
135
|
+
}
|
|
136
|
+
function PrismDatePicker(props) {
|
|
137
|
+
return /* @__PURE__ */ jsx(CalendarInput, { ...props, kind: "date" });
|
|
138
|
+
}
|
|
139
|
+
function PrismTimePicker(props) {
|
|
140
|
+
return /* @__PURE__ */ jsx(CalendarInput, { ...props, kind: "time" });
|
|
141
|
+
}
|
|
142
|
+
function PrismDateTimePicker(props) {
|
|
143
|
+
return /* @__PURE__ */ jsx(CalendarInput, { ...props, kind: "datetime" });
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export { PrismDatePicker, PrismDateTimePicker, PrismTimePicker };
|
|
147
|
+
//# sourceMappingURL=index.js.map
|
|
148
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/date-input/value.ts","../../src/components/date-input/date-input.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import dayjs, { type Dayjs } from 'dayjs';\nimport utc from 'dayjs/plugin/utc.js';\ndayjs.extend(utc);\nexport type CalendarValueKind = 'date' | 'time' | 'datetime';\nexport type CalendarPrecision = 'minute' | 'second';\nexport function calendarFormat(kind: CalendarValueKind, precision: CalendarPrecision = 'minute') {\n const time = precision === 'second' ? 'HH:mm:ss' : 'HH:mm';\n return kind === 'date' ? 'YYYY-MM-DD' : kind === 'time' ? time : `YYYY-MM-DD[T]${time}`;\n}\n/** A calendar/wall-clock value has no time zone. UTC is only the picker's carrier;\n * it must never be serialized as an instant or converted to the device zone. */\nexport function parseCalendarValue(value: string, kind: CalendarValueKind): Dayjs | null {\n if (value === '') return null;\n const source = kind === 'time' ? `2000-01-01T${value}` : value;\n const pattern =\n kind === 'date' ? /^(\\d{4})-(\\d{2})-(\\d{2})$/ : /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2}))?$/;\n const match = pattern.exec(source);\n if (!match) return dayjs.utc(NaN);\n const [, y, m, d, h = '0', minute = '0', sec = '0'] = match;\n const date = new Date(0);\n date.setUTCFullYear(Number(y), Number(m) - 1, Number(d));\n date.setUTCHours(Number(h), Number(minute), Number(sec), 0);\n const second = /:\\d{2}:\\d{2}$/.test(value);\n const format = calendarFormat(kind, second ? 'second' : 'minute');\n const parsed = dayjs.utc(date);\n return parsed.isValid() && parsed.format(format) === value ? parsed : dayjs.utc(NaN);\n}\nexport function formatCalendarValue(\n value: Dayjs | null,\n kind: CalendarValueKind,\n precision: CalendarPrecision\n): string {\n return value?.isValid() ? value.format(calendarFormat(kind, precision)) : '';\n}\n","import { useCallback, useEffect, useRef, useState, type ReactNode } from 'react';\nimport { DatePicker } from '@mui/x-date-pickers/DatePicker';\nimport { TimePicker } from '@mui/x-date-pickers/TimePicker';\nimport { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';\nimport type { Dayjs } from 'dayjs';\nimport type { FieldRef } from '@mui/x-date-pickers/models';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport { formatCalendarValue, parseCalendarValue, type CalendarValueKind, type CalendarPrecision } from './value.js';\nexport interface PrismCalendarInputProps {\n /** Calendar date, wall time, or local date-time; empty string means cleared. */\n value: string;\n onChange: (value: string) => void;\n label: ReactNode;\n /** Localized text for a partial, invalid, or out-of-range value. */\n invalidText: string;\n helperText?: ReactNode;\n name?: string;\n required?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n size?: 'small' | 'medium';\n fullWidth?: boolean;\n min?: string;\n max?: string;\n precision?: CalendarPrecision;\n onValidityChange?: (valid: boolean) => void;\n sx?: SxProps<Theme>;\n}\n/** MUI's segmented keyboard editing/calendar/clock, with an explicit wall-value\n * contract. Invalid drafts remain visible but cannot submit a previous value. */\nfunction CalendarInput({\n kind,\n value,\n onChange,\n label,\n invalidText,\n helperText,\n name,\n required,\n disabled,\n readOnly,\n size = 'medium',\n fullWidth = true,\n min,\n max,\n precision = 'minute',\n onValidityChange,\n sx,\n}: PrismCalendarInputProps & { kind: CalendarValueKind }) {\n const [draft, setDraft] = useState(() => parseCalendarValue(value, kind));\n const [invalid, setInvalid] = useState(false);\n const [partial, setPartial] = useState(false);\n // MUI intentionally publishes null when one segment is deleted, while retaining\n // the other sections. Its public field API distinguishes that draft from clear.\n const captureField = useCallback((field: FieldRef<Dayjs | null> | null) => {\n if (!field) return;\n const sections = field.getSections();\n setPartial(sections.some((section) => section.value !== '') && sections.some((section) => section.value === ''));\n }, []);\n const invalidDraft = invalid || partial;\n const published = useRef(value);\n const input = useRef<HTMLInputElement | null>(null);\n useEffect(() => {\n if (published.current !== value) {\n published.current = value;\n setDraft(parseCalendarValue(value, kind));\n }\n }, [value, kind]);\n useEffect(() => {\n input.current?.setCustomValidity(invalidDraft ? invalidText : '');\n onValidityChange?.(!invalidDraft && (!required || draft !== null));\n }, [invalidDraft, invalidText, onValidityChange, required, draft]);\n const onValue = (next: Dayjs | null, context: { validationError: unknown }) => {\n const failed = context.validationError != null || (next !== null && !next.isValid());\n setDraft(next);\n setInvalid(failed);\n const text = failed ? '' : formatCalendarValue(next, kind, precision);\n published.current = text;\n onChange(text);\n };\n const props = {\n label,\n value: draft,\n timezone: 'UTC',\n onChange: onValue,\n onError: (error: unknown) => setInvalid(error != null),\n inputRef: input,\n disabled,\n readOnly,\n sx,\n slotProps: {\n textField: {\n name,\n required,\n size,\n fullWidth,\n error: invalidDraft,\n helperText: invalidDraft ? invalidText : helperText,\n },\n field: { clearable: true, fieldRef: captureField },\n popper: {\n modifiers: [\n { name: 'flip', options: { rootBoundary: 'viewport', padding: 8 } },\n {\n name: 'preventOverflow',\n // For a top/bottom placement the alternate axis is vertical. A\n // calendar may fit the viewport but neither side of its anchor;\n // permit overlap with the anchor rather than hiding its actions.\n options: { rootBoundary: 'viewport', padding: 8, mainAxis: true, altAxis: true, tether: false },\n },\n ],\n },\n desktopPaper: {\n sx: { maxHeight: 'calc(100dvh - 16px)', maxWidth: 'calc(100vw - 16px)', overflow: 'auto' },\n },\n actionBar: { actions: ['clear', 'cancel', 'accept'] as ('clear' | 'cancel' | 'accept')[] },\n },\n };\n const lower = min ? (parseCalendarValue(min, kind) ?? undefined) : undefined;\n const upper = max ? (parseCalendarValue(max, kind) ?? undefined) : undefined;\n if (kind === 'date') return <DatePicker {...props} minDate={lower} maxDate={upper} />;\n const views = precision === 'second' ? (['hours', 'minutes', 'seconds'] as const) : (['hours', 'minutes'] as const);\n if (kind === 'time') return <TimePicker {...props} ampm={false} views={[...views]} minTime={lower} maxTime={upper} />;\n return (\n <DateTimePicker {...props} ampm={false} views={['year', 'day', ...views]} minDateTime={lower} maxDateTime={upper} />\n );\n}\nexport function PrismDatePicker(props: PrismCalendarInputProps) {\n return <CalendarInput {...props} kind=\"date\" />;\n}\nexport function PrismTimePicker(props: PrismCalendarInputProps) {\n return <CalendarInput {...props} kind=\"time\" />;\n}\nexport function PrismDateTimePicker(props: PrismCalendarInputProps) {\n return <CalendarInput {...props} kind=\"datetime\" />;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omnitron-dev/prism",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Design System Constructor - High-level UI building blocks for complex frontends",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -67,7 +67,39 @@
|
|
|
67
67
|
"./cli": {
|
|
68
68
|
"types": "./dist/cli/index.d.ts",
|
|
69
69
|
"import": "./dist/cli/index.js"
|
|
70
|
-
}
|
|
70
|
+
},
|
|
71
|
+
"./components/research": {
|
|
72
|
+
"types": "./dist/components/research/index.d.ts",
|
|
73
|
+
"import": "./dist/components/research/index.js"
|
|
74
|
+
},
|
|
75
|
+
"./components/research/styles.css": "./dist/components/research/index.css",
|
|
76
|
+
"./components/research-editor": {
|
|
77
|
+
"types": "./dist/components/research-editor/index.d.ts",
|
|
78
|
+
"import": "./dist/components/research-editor/index.js"
|
|
79
|
+
},
|
|
80
|
+
"./components/research-editor/styles.css": "./dist/components/research-editor/index.css",
|
|
81
|
+
"./components/knowledge-graph": {
|
|
82
|
+
"types": "./dist/components/knowledge-graph/index.d.ts",
|
|
83
|
+
"import": "./dist/components/knowledge-graph/index.js"
|
|
84
|
+
},
|
|
85
|
+
"./components/knowledge-graph/styles.css": "./dist/components/knowledge-graph/index.css",
|
|
86
|
+
"./ui": {
|
|
87
|
+
"types": "./dist/ui/index.d.ts",
|
|
88
|
+
"import": "./dist/ui/index.js"
|
|
89
|
+
},
|
|
90
|
+
"./components/doc-layout": {
|
|
91
|
+
"types": "./dist/components/doc-layout/index.d.ts",
|
|
92
|
+
"import": "./dist/components/doc-layout/index.js"
|
|
93
|
+
},
|
|
94
|
+
"./icons": {
|
|
95
|
+
"types": "./dist/icons/index.d.ts",
|
|
96
|
+
"import": "./dist/icons/index.js"
|
|
97
|
+
},
|
|
98
|
+
"./components/map": {
|
|
99
|
+
"types": "./dist/components/map/index.d.ts",
|
|
100
|
+
"import": "./dist/components/map/index.js"
|
|
101
|
+
},
|
|
102
|
+
"./components/map/styles.css": "./dist/components/map/index.css"
|
|
71
103
|
},
|
|
72
104
|
"bin": {
|
|
73
105
|
"prism": "./bin/prism.js"
|
|
@@ -82,38 +114,52 @@
|
|
|
82
114
|
"@emotion/cache": "^11.14.0",
|
|
83
115
|
"@emotion/react": "^11.14.0",
|
|
84
116
|
"@emotion/styled": "^11.14.1",
|
|
85
|
-
"@hookform/resolvers": "
|
|
86
|
-
"@mui/icons-material": "^9.
|
|
87
|
-
"@mui/material": "^9.
|
|
88
|
-
"@mui/system": "^9.
|
|
89
|
-
"@mui/x-data-grid": "^9.
|
|
90
|
-
"@mui/x-date-pickers": "^9.
|
|
91
|
-
"@tanstack/react-virtual": "^3.14.
|
|
92
|
-
"@tiptap/core": "^3.
|
|
93
|
-
"@tiptap/extension-code-block-lowlight": "^3.
|
|
94
|
-
"@tiptap/extension-image": "^3.
|
|
95
|
-
"@tiptap/extension-link": "^3.
|
|
96
|
-
"@tiptap/extension-placeholder": "^3.
|
|
97
|
-
"@tiptap/extension-
|
|
98
|
-
"@tiptap/extension-task-
|
|
99
|
-
"@tiptap/extension-
|
|
100
|
-
"@tiptap/extension-
|
|
101
|
-
"@tiptap/
|
|
102
|
-
"@tiptap/
|
|
103
|
-
"@tiptap/
|
|
117
|
+
"@hookform/resolvers": "6.0.0",
|
|
118
|
+
"@mui/icons-material": "^9.5.0",
|
|
119
|
+
"@mui/material": "^9.5.0",
|
|
120
|
+
"@mui/system": "^9.5.0",
|
|
121
|
+
"@mui/x-data-grid": "^9.16.0",
|
|
122
|
+
"@mui/x-date-pickers": "^9.16.0",
|
|
123
|
+
"@tanstack/react-virtual": "^3.14.22",
|
|
124
|
+
"@tiptap/core": "^3.32.0",
|
|
125
|
+
"@tiptap/extension-code-block-lowlight": "^3.32.0",
|
|
126
|
+
"@tiptap/extension-image": "^3.32.0",
|
|
127
|
+
"@tiptap/extension-link": "^3.32.0",
|
|
128
|
+
"@tiptap/extension-placeholder": "^3.32.0",
|
|
129
|
+
"@tiptap/extension-table": "^3.32.0",
|
|
130
|
+
"@tiptap/extension-task-item": "^3.32.0",
|
|
131
|
+
"@tiptap/extension-task-list": "^3.32.0",
|
|
132
|
+
"@tiptap/extension-text-align": "^3.32.0",
|
|
133
|
+
"@tiptap/extension-underline": "^3.32.0",
|
|
134
|
+
"@tiptap/pm": "^3.32.0",
|
|
135
|
+
"@tiptap/react": "^3.32.0",
|
|
136
|
+
"@tiptap/starter-kit": "^3.32.0",
|
|
104
137
|
"@types/turndown": "^5.0.6",
|
|
138
|
+
"@xyflow/react": "^12.12.0",
|
|
105
139
|
"class-variance-authority": "^0.7.1",
|
|
106
140
|
"clsx": "^2.1.1",
|
|
107
|
-
"commander": "^
|
|
141
|
+
"commander": "^15.0.0",
|
|
108
142
|
"dayjs": "^1.11.23",
|
|
109
|
-
"
|
|
110
|
-
"
|
|
143
|
+
"dompurify": "^3.4.17",
|
|
144
|
+
"framer-motion": "^14.6.0",
|
|
145
|
+
"immer": "^11.2.9",
|
|
146
|
+
"katex": "^0.19.0",
|
|
111
147
|
"lowlight": "^3.3.0",
|
|
112
|
-
"maplibre-gl": "^6.
|
|
148
|
+
"maplibre-gl": "^6.15.0",
|
|
149
|
+
"mathlive": "0.111.1",
|
|
150
|
+
"mdast-util-directive": "^3.1.1",
|
|
151
|
+
"mdast-util-from-markdown": "^2.1.0",
|
|
152
|
+
"mdast-util-gfm": "^3.1.0",
|
|
153
|
+
"mdast-util-math": "^3.0.0",
|
|
154
|
+
"mdast-util-to-markdown": "^2.2.0",
|
|
155
|
+
"mermaid": "^12.2.0",
|
|
156
|
+
"micromark-extension-directive": "^4.0.0",
|
|
157
|
+
"micromark-extension-gfm": "^3.0.0",
|
|
158
|
+
"micromark-extension-math": "^3.1.0",
|
|
113
159
|
"nprogress": "^0.2.0",
|
|
114
160
|
"pmtiles": "^4.5.0",
|
|
115
|
-
"react-dropzone": "^20.1.
|
|
116
|
-
"react-hook-form": "^7.
|
|
161
|
+
"react-dropzone": "^20.1.4",
|
|
162
|
+
"react-hook-form": "^7.90.0",
|
|
117
163
|
"react-map-gl": "^8.1.3",
|
|
118
164
|
"react-markdown": "^10.1.0",
|
|
119
165
|
"rehype-highlight": "^7.0.2",
|
|
@@ -123,33 +169,34 @@
|
|
|
123
169
|
"stylis": "^4.4.0",
|
|
124
170
|
"stylis-plugin-rtl": "^2.1.1",
|
|
125
171
|
"turndown": "^7.2.4",
|
|
126
|
-
"zod": "^4.
|
|
127
|
-
"zustand": "^5.0.
|
|
128
|
-
"@omnitron-dev/netron-browser": "0.3.
|
|
129
|
-
"@omnitron-dev/netron-react": "0.3.
|
|
172
|
+
"zod": "^4.6.7",
|
|
173
|
+
"zustand": "^5.0.16",
|
|
174
|
+
"@omnitron-dev/netron-browser": "0.3.1",
|
|
175
|
+
"@omnitron-dev/netron-react": "0.3.1"
|
|
130
176
|
},
|
|
131
177
|
"devDependencies": {
|
|
132
|
-
"@axe-core/playwright": "^4.
|
|
133
|
-
"@mui/lab": "9.0.0-beta.
|
|
134
|
-
"@playwright/test": "^1.
|
|
178
|
+
"@axe-core/playwright": "^4.14.0",
|
|
179
|
+
"@mui/lab": "9.0.0-beta.10",
|
|
180
|
+
"@playwright/test": "^1.64.1",
|
|
135
181
|
"@testing-library/jest-dom": "^7.0.1",
|
|
136
182
|
"@testing-library/react": "^16.3.3",
|
|
137
|
-
"@testing-library/user-event": "^14.6.
|
|
138
|
-
"@types/node": "^
|
|
183
|
+
"@testing-library/user-event": "^14.6.8",
|
|
184
|
+
"@types/node": "^26.6.5",
|
|
139
185
|
"@types/nprogress": "^0.2.3",
|
|
140
|
-
"@types/react": "^19.
|
|
141
|
-
"@types/react-dom": "^19.
|
|
186
|
+
"@types/react": "^19.3.0",
|
|
187
|
+
"@types/react-dom": "^19.3.0",
|
|
142
188
|
"@vitejs/plugin-react-swc": "^4.3.3",
|
|
143
|
-
"@vitest/coverage-v8": "^5.0.
|
|
144
|
-
"apexcharts": "^
|
|
145
|
-
"happy-dom": "^
|
|
189
|
+
"@vitest/coverage-v8": "^5.0.5",
|
|
190
|
+
"apexcharts": "^8.4.1",
|
|
191
|
+
"happy-dom": "^21.0.4",
|
|
192
|
+
"jsdom": "^30.1.3",
|
|
146
193
|
"react-apexcharts": "^2.1.1",
|
|
147
|
-
"react-router-dom": "7.18.
|
|
194
|
+
"react-router-dom": "7.18.4",
|
|
148
195
|
"sonner": "^2.0.8",
|
|
149
|
-
"tsup": "^
|
|
196
|
+
"tsup": "^9.0.0",
|
|
150
197
|
"typescript": "^7.0.2",
|
|
151
|
-
"vite": "^8.
|
|
152
|
-
"vitest": "^5.0.
|
|
198
|
+
"vite": "^8.3.5",
|
|
199
|
+
"vitest": "^5.0.5"
|
|
153
200
|
},
|
|
154
201
|
"peerDependencies": {
|
|
155
202
|
"apexcharts": ">=5.0.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme/palette.ts","../src/theme/presets/default.ts","../src/theme/presets/luxury.ts","../src/theme/presets/nature.ts","../src/theme/presets/index.ts","../src/theme/css-variables.ts"],"names":["lightPalette","darkPalette"],"mappings":"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","file":"chunk-6AHI4GSV.js","sourcesContent":["/**\n * Palette Utilities\n *\n * Utilities for palette manipulation and CSS channel generation.\n * All color math uses HSL for perceptually correct results.\n *\n * @module theme/palette\n */\n\nimport type { ThemePalette, PaletteColor, ColorScale, ColorScaleWithChannels } from '../types/theme.js';\nimport {\n generatePaletteColorWithChannels,\n generateColorScaleWithChannels,\n hexToRgbChannel,\n lighten,\n darken,\n} from './utils/color.js';\n\n/**\n * Generate RGB channel string from hex color.\n *\n * @param hex - Hex color value\n * @returns RGB channel string (e.g., \"255 255 255\")\n */\nexport function generatePaletteChannel(hex: string): string {\n return hexToRgbChannel(hex);\n}\n\n/**\n * Generate a full palette color from a main color.\n * Uses HSL-based color math for perceptually correct shades.\n *\n * @param main - Main color hex value\n * @param contrastText - Contrast text color (default: white)\n * @returns Full palette color with all shades\n */\nexport function generatePaletteColor(main: string, contrastText = '#FFFFFF'): PaletteColor {\n // HSL lightness adjustments (percentage points)\n // These values produce visually balanced shade progressions\n return {\n lighter: lighten(main, 32), // +32 lightness points (very light, ~85-95% L)\n light: lighten(main, 16), // +16 lightness points (light, ~65-75% L)\n main, // Base color (typically ~45-55% L)\n dark: darken(main, 12), // -12 lightness points (dark, ~35-45% L)\n darker: darken(main, 28), // -28 lightness points (very dark, ~20-30% L)\n contrastText,\n };\n}\n\n/**\n * Apply primary color override to a palette.\n *\n * @param palette - Base palette\n * @param primaryColor - New primary color\n * @param mode - Theme mode (light/dark)\n * @returns Updated palette with new primary color\n */\nexport function applyPrimaryOverride(\n palette: ThemePalette,\n primaryColor: string,\n mode: 'light' | 'dark' = 'light'\n): ThemePalette {\n const contrastText = mode === 'dark' ? '#FFFFFF' : '#FFFFFF';\n const basePrimary = generatePaletteColor(primaryColor, contrastText);\n const newPrimary = generatePaletteColorWithChannels(basePrimary);\n\n return {\n ...palette,\n primary: newPrimary,\n };\n}\n\n/**\n * Create grey palette.\n */\nexport function createGreyPalette(): ColorScaleWithChannels {\n const scale: ColorScale = {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#EEEEEE',\n 300: '#E0E0E0',\n 400: '#BDBDBD',\n 500: '#9E9E9E',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n 950: '#121212',\n };\n return generateColorScaleWithChannels(scale);\n}\n\n/**\n * Create dark mode grey palette.\n */\nexport function createDarkGreyPalette(): ColorScaleWithChannels {\n const scale: ColorScale = {\n 50: '#1A1A1A',\n 100: '#242424',\n 200: '#2E2E2E',\n 300: '#383838',\n 400: '#454545',\n 500: '#5C5C5C',\n 600: '#757575',\n 700: '#9E9E9E',\n 800: '#BDBDBD',\n 900: '#E0E0E0',\n 950: '#F5F5F5',\n };\n return generateColorScaleWithChannels(scale);\n}\n","/**\n * Default Theme Preset\n *\n * A neutral, modern theme suitable for most applications.\n *\n * @module theme/presets/default\n */\n\nimport type { ThemePresetDefinition, PresetPalette } from '../../types/theme.js';\n\n/**\n * Light mode palette.\n */\nconst lightPalette: PresetPalette = {\n primary: {\n lighter: '#C8FAD6',\n light: '#5BE49B',\n main: '#00A76F',\n dark: '#007867',\n darker: '#004B50',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#EFD6FF',\n light: '#C684FF',\n main: '#8E33FF',\n dark: '#5119B7',\n darker: '#27097A',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#CAFDF5',\n light: '#61F3F3',\n main: '#00B8D9',\n dark: '#006C9C',\n darker: '#003768',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D3FCD2',\n light: '#77ED8B',\n main: '#22C55E',\n dark: '#118D57',\n darker: '#065E49',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF5CC',\n light: '#FFD666',\n main: '#FFAB00',\n dark: '#B76E00',\n darker: '#7A4100',\n contrastText: '#212121',\n },\n error: {\n lighter: '#FFE9D5',\n light: '#FFAC82',\n main: '#FF5630',\n dark: '#B71D18',\n darker: '#7A0916',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#EEEEEE',\n 300: '#E0E0E0',\n 400: '#BDBDBD',\n 500: '#9E9E9E',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n },\n common: {\n black: '#000000',\n white: '#FFFFFF',\n },\n background: {\n default: '#FFFFFF',\n paper: '#FFFFFF',\n neutral: '#F4F6F8',\n },\n text: {\n primary: '#212121',\n secondary: '#637381',\n disabled: '#919EAB',\n },\n};\n\n/**\n * Dark mode palette.\n */\nconst darkPalette: PresetPalette = {\n primary: {\n lighter: '#C8FAD6',\n light: '#5BE49B',\n main: '#00A76F',\n dark: '#007867',\n darker: '#004B50',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#EFD6FF',\n light: '#C684FF',\n main: '#8E33FF',\n dark: '#5119B7',\n darker: '#27097A',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#CAFDF5',\n light: '#61F3F3',\n main: '#00B8D9',\n dark: '#006C9C',\n darker: '#003768',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D3FCD2',\n light: '#77ED8B',\n main: '#22C55E',\n dark: '#118D57',\n darker: '#065E49',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF5CC',\n light: '#FFD666',\n main: '#FFAB00',\n dark: '#B76E00',\n darker: '#7A4100',\n contrastText: '#212121',\n },\n error: {\n lighter: '#FFE9D5',\n light: '#FFAC82',\n main: '#FF5630',\n dark: '#B71D18',\n darker: '#7A0916',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#161C24',\n 100: '#212B36',\n 200: '#454F5B',\n 300: '#637381',\n 400: '#919EAB',\n 500: '#C4CDD5',\n 600: '#DFE3E8',\n 700: '#F4F6F8',\n 800: '#F9FAFB',\n 900: '#FFFFFF',\n },\n common: {\n black: '#000000',\n white: '#FFFFFF',\n },\n background: {\n default: '#161C24',\n paper: '#212B36',\n neutral: '#28323D',\n },\n text: {\n primary: '#FFFFFF',\n secondary: '#919EAB',\n disabled: '#637381',\n },\n};\n\n/**\n * Default theme preset.\n */\nexport const defaultPreset: ThemePresetDefinition = {\n name: 'default-light',\n displayName: 'Default',\n description: 'A neutral, modern theme suitable for most applications.',\n preferredMode: 'light',\n lightPalette,\n darkPalette,\n typography: {\n fontFamily: {\n primary: '\"Public Sans Variable\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n secondary: '\"Barlow\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n mono: '\"JetBrains Mono\", \"Fira Code\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'default',\n main: '#00A76F',\n },\n};\n","/**\n * Luxury Theme Preset\n *\n * A rich, elegant theme with deep colors and premium feel.\n *\n * @module theme/presets/luxury\n */\n\nimport type { ThemePresetDefinition, PresetPalette } from '../../types/theme.js';\n\n/**\n * Light mode palette.\n */\nconst lightPalette: PresetPalette = {\n primary: {\n lighter: '#F5E6D3',\n light: '#D4A574',\n main: '#8B6914',\n dark: '#6B4F0F',\n darker: '#4A370A',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#E8D5E8',\n light: '#B38AB3',\n main: '#6B3A6B',\n dark: '#4D2A4D',\n darker: '#2F1A2F',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#D6E4F0',\n light: '#8BBED9',\n main: '#2E7AB8',\n dark: '#1F5A8A',\n darker: '#103A5C',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D8EED3',\n light: '#8BC98A',\n main: '#2E8B2E',\n dark: '#1F6B1F',\n darker: '#104A10',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF3D6',\n light: '#FFD98B',\n main: '#D4A012',\n dark: '#A67A0E',\n darker: '#785509',\n contrastText: '#212121',\n },\n error: {\n lighter: '#F5D6D6',\n light: '#D98B8B',\n main: '#B82E2E',\n dark: '#8A1F1F',\n darker: '#5C1010',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#FAF9F7',\n 100: '#F5F3F0',\n 200: '#E8E4DE',\n 300: '#D4CEC4',\n 400: '#B8AFA0',\n 500: '#9C917C',\n 600: '#7A6F5C',\n 700: '#5C5244',\n 800: '#3E362C',\n 900: '#201C16',\n },\n common: {\n black: '#0D0A06',\n white: '#FFFCF7',\n },\n background: {\n default: '#FFFCF7',\n paper: '#FFFFFF',\n neutral: '#F5F3F0',\n },\n text: {\n primary: '#201C16',\n secondary: '#5C5244',\n disabled: '#9C917C',\n },\n};\n\n/**\n * Dark mode palette.\n */\nconst darkPalette: PresetPalette = {\n primary: {\n lighter: '#F5E6D3',\n light: '#D4A574',\n main: '#C9A227',\n dark: '#A68A1F',\n darker: '#846D18',\n contrastText: '#0D0A06',\n },\n secondary: {\n lighter: '#E8D5E8',\n light: '#B38AB3',\n main: '#9B5A9B',\n dark: '#7D4A7D',\n darker: '#5F3A5F',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#D6E4F0',\n light: '#8BBED9',\n main: '#4E9AD4',\n dark: '#3A7AB0',\n darker: '#265A8C',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D8EED3',\n light: '#8BC98A',\n main: '#4EAB4E',\n dark: '#3A8B3A',\n darker: '#266B26',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF3D6',\n light: '#FFD98B',\n main: '#E8B612',\n dark: '#C49A0E',\n darker: '#A07E0A',\n contrastText: '#0D0A06',\n },\n error: {\n lighter: '#F5D6D6',\n light: '#D98B8B',\n main: '#D44E4E',\n dark: '#B03A3A',\n darker: '#8C2626',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#18140E',\n 100: '#241E16',\n 200: '#362E22',\n 300: '#4A402E',\n 400: '#5E523A',\n 500: '#7A6F5C',\n 600: '#9C917C',\n 700: '#B8AFA0',\n 800: '#D4CEC4',\n 900: '#E8E4DE',\n },\n common: {\n black: '#0D0A06',\n white: '#FFFCF7',\n },\n background: {\n default: '#0D0A06',\n paper: '#18140E',\n neutral: '#241E16',\n },\n text: {\n primary: '#E8E4DE',\n secondary: '#B8AFA0',\n disabled: '#7A6F5C',\n },\n};\n\n/**\n * Luxury theme preset.\n */\nexport const luxuryPreset: ThemePresetDefinition = {\n name: 'luxury',\n displayName: 'Luxury',\n description: 'A rich, elegant theme with deep colors and premium feel.',\n preferredMode: 'light',\n lightPalette,\n darkPalette,\n typography: {\n fontFamily: {\n primary: '\"Playfair Display\", Georgia, \"Times New Roman\", serif',\n secondary: '\"Lato\", -apple-system, BlinkMacSystemFont, sans-serif',\n mono: '\"JetBrains Mono\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'luxury',\n main: '#8B6914',\n },\n};\n","/**\n * Nature Theme Preset\n *\n * An earthy, organic theme with warm greens and natural tones.\n *\n * @module theme/presets/nature\n */\n\nimport type { ThemePresetDefinition } from '../../types/theme.js';\nimport { green } from '../colors/base.js';\n\n/**\n * Nature theme preset.\n * Optimized for light mode with earthy green tones.\n */\nexport const naturePreset: ThemePresetDefinition = {\n name: 'nature',\n displayName: 'Nature',\n description: 'An earthy, organic theme with warm greens and natural tones.',\n preferredMode: 'light',\n typography: {\n fontFamily: {\n primary: '\"Nunito\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n secondary: '\"Merriweather\", Georgia, serif',\n mono: '\"JetBrains Mono\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'nature',\n main: green[500],\n palette: green,\n },\n};\n","/**\n * Theme Presets Index\n *\n * @module theme/presets\n */\n\nimport type { ThemePreset, ThemePresetDefinition } from '../../types/theme.js';\nimport { defaultPreset } from './default.js';\nimport { luxuryPreset } from './luxury.js';\nimport { arcticPreset } from './arctic.js';\nimport { naturePreset } from './nature.js';\nimport { emberPreset } from './ember.js';\nimport { draculaPreset } from './dracula.js';\nimport { midnightPreset } from './midnight.js';\nimport { retroPreset } from './retro.js';\nimport { minimalPreset } from './minimal.js';\n\n/**\n * All available preset names.\n */\nexport const presetNames: ThemePreset[] = [\n 'default-light',\n 'default-dark',\n 'luxury',\n 'arctic',\n 'nature',\n 'ember',\n 'dracula',\n 'midnight',\n 'retro',\n 'minimal',\n];\n\n/**\n * Preset registry.\n */\nconst presets: Record<string, ThemePresetDefinition> = {\n 'default-light': defaultPreset,\n 'default-dark': defaultPreset, // Uses same preset but different preferred mode\n luxury: luxuryPreset,\n arctic: arcticPreset,\n nature: naturePreset,\n ember: emberPreset,\n dracula: draculaPreset,\n midnight: midnightPreset,\n retro: retroPreset,\n minimal: minimalPreset,\n};\n\n/**\n * Get a theme preset by name.\n *\n * @param name - Preset name\n * @returns Theme preset definition\n * @throws If preset is not found\n */\nexport function getPreset(name: ThemePreset): ThemePresetDefinition {\n const preset = presets[name];\n\n if (!preset) {\n console.warn(`Preset \"${name}\" not found, falling back to \"default-light\"`);\n return defaultPreset;\n }\n\n return preset;\n}\n\n/**\n * Register a custom preset.\n *\n * @param name - Preset name\n * @param preset - Preset definition\n */\nexport function registerPreset(name: string, preset: ThemePresetDefinition): void {\n presets[name] = preset;\n}\n\n/**\n * Get all registered presets.\n */\nexport function getAllPresets(): Record<string, ThemePresetDefinition> {\n return { ...presets };\n}\n\n// Re-export presets\nexport { defaultPreset } from './default.js';\nexport { luxuryPreset } from './luxury.js';\nexport { arcticPreset } from './arctic.js';\nexport { naturePreset } from './nature.js';\nexport { emberPreset } from './ember.js';\nexport { draculaPreset } from './dracula.js';\nexport { midnightPreset } from './midnight.js';\nexport { retroPreset } from './retro.js';\nexport { minimalPreset } from './minimal.js';\n","/**\n * CSS Variables System\n *\n * Utilities for generating and managing CSS variables.\n *\n * @module theme/css-variables\n */\n\nimport type { PrismTheme, CssVariablesConfig } from '../types/theme.js';\nimport { generatePaletteChannel } from './palette.js';\n\n/**\n * CSS variable definitions.\n * Uses an index signature since keys are dynamically generated based on prefix.\n */\nexport interface CssVariables {\n [key: string]: string;\n}\n\n/**\n * Default CSS variable values.\n */\nexport const cssVariables: CssVariables = {\n '--prism-background': '#FFFFFF',\n '--prism-foreground': '#212121',\n '--prism-card': '#FFFFFF',\n '--prism-card-foreground': '#212121',\n '--prism-popover': '#FFFFFF',\n '--prism-popover-foreground': '#212121',\n\n '--prism-primary': '#00A76F',\n '--prism-primary-foreground': '#FFFFFF',\n '--prism-primary-lighter': '#C8FAD6',\n '--prism-primary-light': '#5BE49B',\n '--prism-primary-dark': '#007867',\n '--prism-primary-darker': '#004B50',\n\n '--prism-secondary': '#8E33FF',\n '--prism-secondary-foreground': '#FFFFFF',\n\n '--prism-muted': '#F4F6F8',\n '--prism-muted-foreground': '#637381',\n '--prism-accent': '#F4F6F8',\n '--prism-accent-foreground': '#212121',\n '--prism-destructive': '#FF5630',\n '--prism-destructive-foreground': '#FFFFFF',\n\n '--prism-border': '#E0E0E0',\n '--prism-input': '#E0E0E0',\n '--prism-ring': '#00A76F',\n\n '--prism-radius': '0.5rem',\n\n '--prism-primary-channel': '0 167 111',\n '--prism-secondary-channel': '142 51 255',\n '--prism-background-channel': '255 255 255',\n};\n\n/**\n * Generate CSS variables from a Prism theme.\n *\n * @param theme - Prism theme\n * @param config - CSS variables configuration\n * @returns CSS variables object\n */\nexport function generateCssVariables(theme: PrismTheme, config: CssVariablesConfig): CssVariables {\n const { prefix } = config;\n const { palette } = theme;\n\n const vars: CssVariables = {\n [`--${prefix}-background`]: palette.background.default,\n [`--${prefix}-foreground`]: palette.text.primary,\n [`--${prefix}-card`]: palette.background.paper,\n [`--${prefix}-card-foreground`]: palette.text.primary,\n [`--${prefix}-popover`]: palette.background.paper,\n [`--${prefix}-popover-foreground`]: palette.text.primary,\n\n [`--${prefix}-primary`]: palette.primary.main,\n [`--${prefix}-primary-foreground`]: palette.primary.contrastText,\n [`--${prefix}-primary-lighter`]:\n (palette.primary as unknown as { lighter?: string }).lighter || palette.primary.light,\n [`--${prefix}-primary-light`]: palette.primary.light,\n [`--${prefix}-primary-dark`]: palette.primary.dark,\n [`--${prefix}-primary-darker`]: (palette.primary as unknown as { darker?: string }).darker || palette.primary.dark,\n\n [`--${prefix}-secondary`]: palette.secondary.main,\n [`--${prefix}-secondary-foreground`]: palette.secondary.contrastText,\n\n [`--${prefix}-muted`]: palette.background.default,\n [`--${prefix}-muted-foreground`]: palette.text.secondary,\n [`--${prefix}-accent`]: palette.background.default,\n [`--${prefix}-accent-foreground`]: palette.text.primary,\n [`--${prefix}-destructive`]: palette.error.main,\n [`--${prefix}-destructive-foreground`]: palette.error.contrastText,\n\n [`--${prefix}-border`]: palette.divider || palette.grey[300],\n [`--${prefix}-input`]: palette.divider || palette.grey[300],\n [`--${prefix}-ring`]: palette.primary.main,\n\n [`--${prefix}-radius`]: `${theme.shape.borderRadius}px`,\n\n [`--${prefix}-primary-channel`]: generatePaletteChannel(palette.primary.main),\n [`--${prefix}-secondary-channel`]: generatePaletteChannel(palette.secondary.main),\n [`--${prefix}-background-channel`]: generatePaletteChannel(palette.background.default),\n };\n\n // Inject into document if in browser\n if (typeof document !== 'undefined') {\n injectCssVariables(vars, config);\n }\n\n return vars;\n}\n\n/**\n * Inject CSS variables into the document.\n *\n * @param vars - CSS variables object\n * @param config - CSS variables configuration\n */\nfunction injectCssVariables(vars: CssVariables, config: CssVariablesConfig): void {\n const root = document.documentElement;\n\n Object.entries(vars).forEach(([key, value]) => {\n root.style.setProperty(key, value);\n });\n}\n\n/**\n * Get computed CSS variable value.\n *\n * @param name - Variable name (with or without --)\n * @returns Computed value\n */\nexport function getCssVariable(name: string): string {\n if (typeof window === 'undefined') return '';\n\n const varName = name.startsWith('--') ? name : `--${name}`;\n return getComputedStyle(document.documentElement).getPropertyValue(varName).trim();\n}\n\n/**\n * Set CSS variable value.\n *\n * @param name - Variable name (with or without --)\n * @param value - New value\n */\nexport function setCssVariable(name: string, value: string): void {\n if (typeof document === 'undefined') return;\n\n const varName = name.startsWith('--') ? name : `--${name}`;\n document.documentElement.style.setProperty(varName, value);\n}\n"]}
|