@povio/ui 5.0.0-rc.7 → 5.0.0-rc.9

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.
@@ -1302,7 +1302,7 @@
1302
1302
  background: #93c47d;
1303
1303
  }
1304
1304
  .studio-inspect-region.is-gap {
1305
- background: repeating-linear-gradient(45deg, #b48ce0 0 3px, #d8c3ef 3px 6px);
1305
+ background: repeating-linear-gradient(45deg, #fb923c 0 3px, #fed7aa 3px 6px);
1306
1306
  }
1307
1307
  .studio-inspect-region.is-radius {
1308
1308
  background: #f0a35e;
@@ -1338,7 +1338,7 @@
1338
1338
  color: #b9e0a5;
1339
1339
  }
1340
1340
  .studio-inspect-label.is-gap strong {
1341
- color: #d8c3ef;
1341
+ color: #fed7aa;
1342
1342
  }
1343
1343
  .studio-inspect-label.is-radius strong {
1344
1344
  color: #f6c08f;
@@ -3171,15 +3171,16 @@
3171
3171
  0 0 0 1px #fff;
3172
3172
  }
3173
3173
  .studio-measure-region.is-margin {
3174
- background: #f59e0b99;
3175
- color: #92400e;
3174
+ background: #22c55e88;
3175
+ color: #15803d;
3176
3176
  }
3177
3177
  .studio-measure-region.is-border {
3178
3178
  background: #2563ebbf;
3179
3179
  color: #1e40af;
3180
3180
  }
3181
3181
  .studio-measure-region.is-gap {
3182
- background: repeating-linear-gradient(45deg, #7c3aed88 0 3px, #5b21b6bf 3px 5px);
3182
+ background: repeating-linear-gradient(45deg, #fb923c88 0 3px, #ea580cbf 3px 5px);
3183
+ color: #c2410c;
3183
3184
  }
3184
3185
  .studio-measure-region.is-horizontal {
3185
3186
  height: 1px !important;
@@ -3264,3 +3265,16 @@
3264
3265
  stroke-width: 3px;
3265
3266
  filter: drop-shadow(0 0 1px #fff);
3266
3267
  }
3268
+
3269
+ /* The canvas editor is a movable tool window; the workspace remains interactive. */
3270
+ .studio-overlay.studio-overlay-floating {
3271
+ background: transparent;
3272
+ backdrop-filter: none;
3273
+ pointer-events: none;
3274
+ }
3275
+ .studio-overlay-floating > .studio-modal {
3276
+ pointer-events: auto;
3277
+ box-shadow:
3278
+ 0 16px 64px #17102030,
3279
+ 0 0 0 1px #17102018;
3280
+ }
@@ -1,3 +1,3 @@
1
1
  import { a as DeepValue, c as UIForm, d as useFormState, f as useFormValue, i as DeepKeys, l as UseFormProps, o as FormSubmitErrorHandler, s as FormSubmitHandler, u as useForm } from "../form.binding-DVJ5F0JE.js";
2
- import { n as UseFormAutosaveProps, r as useFormAutosave, t as Form } from "../Form-BJ12MjE-.js";
2
+ import { n as UseFormAutosaveProps, r as useFormAutosave, t as Form } from "../Form-DbEWnCKc.js";
3
3
  export { type DeepKeys, type DeepValue, Form, type FormSubmitErrorHandler, type FormSubmitHandler, type UIForm, type UseFormAutosaveProps, type UseFormProps, useForm, useFormAutosave, useFormState, useFormValue };
@@ -1,5 +1,5 @@
1
1
  import { n as InputVariantProps } from "../input.cva-BsHgYa-L.js";
2
2
  import { s as OmitDiscriminatedUnion } from "../common-UBFya8WY.js";
3
- import { a as DynamicInputsObjectSchema, l as InputDef, o as DynamicInputsOptions, s as dynamicInputs } from "../dynamicInputs-iP39lVKf.js";
4
- import { n as InputsProps, t as Inputs } from "../Inputs-DA73LmLc.js";
3
+ import { a as DynamicInputsObjectSchema, l as InputDef, o as DynamicInputsOptions, s as dynamicInputs } from "../dynamicInputs-ByVMnx4Z.js";
4
+ import { n as InputsProps, t as Inputs } from "../Inputs-O84btFJL.js";
5
5
  export { type DynamicInputsObjectSchema, type DynamicInputsOptions, type InputDef, type InputVariantProps, Inputs, type InputsProps, type OmitDiscriminatedUnion, dynamicInputs };
@@ -58,6 +58,7 @@ import { n as ToastParams, r as useToast, t as ToastOptions } from "./useToast-y
58
58
  import { n as BadgeProps, t as Badge } from "./Badge-CBNpj823.js";
59
59
  import { i as tagDefinition, n as TagProps, r as TagVariantProps, t as Tag } from "./Tag-AHfV_XSf.js";
60
60
  import { i as AccordionProps, n as AccordionItem, r as AccordionItemProps, t as Accordion } from "./Accordion-Cup5eRZz.js";
61
+ import { t as UIConfig } from "./uiConfig.context-DeBX2beU.js";
61
62
  import { t as Confirmation } from "./confirmation.context-BOeEVczb.js";
62
63
  import { n as DatePicker, r as DatePickerProps, t as ControlledDatePickerProps } from "./DatePicker-8xSs_jNd.js";
63
64
  import { a as DateRangeResolvedValue, i as DateRangeRelativeOption, n as DateRangePicker, r as DateRangePickerProps, t as ControlledDateRangePickerProps } from "./DateRangePicker-Bfq-yDm7.js";
@@ -75,19 +76,18 @@ import { a as progressDefinition, c as progressTrackWrapperDefinition, i as Prog
75
76
  import { n as resources, t as ns } from "./i18n-CX1vFM9r.js";
76
77
  import { c as toggleGroupDefinition, l as toggleGroupItemDefinition, s as ToggleGroupProps, t as ControlledToggleGroupProps } from "./toggleGroup.types-Bp43zbSQ.js";
77
78
  import { n as TimePicker, r as TimePickerProps, t as ControlledTimePickerProps } from "./TimePicker-B1POvGWs.js";
78
- import { $ as LabelConfig, A as createKeyInteractionsHandler, At as breadcrumbSegmentDefinition, B as useDeepCompareLayoutEffect, C as useLongPressRepeat, Ct as BreadcrumbIconVariantProps, D as KeyInteractionGroup, Dt as breadcrumbChevronDefinition, E as KeyInteractionCallback, Et as BreadcrumbsVariantProps, H as useDebounceCallback, J as popoverDefinition, K as statusIconDefinition, M as useKeyInteractions, N as useIntersectionObserver, O as KeyInteractions, Ot as breadcrumbIconDefinition, Q as LabelBaseProps, S as useScrollableListBox, St as BreadcrumbChevronVariantProps, T as KeyInteractionAction, Tt as BreadcrumbSegmentVariantProps, U as useBreakpoint, V as useDeepCompareMemo, X as selectInputTagsContentWrapperDefinition, Y as selectListBoxItemDefinition, Z as selectPopoverDefinition, _ as ObjectUtils, _t as accordionTriggerDefinition, a as DynamicInputsObjectSchema, at as fileUploadDropZoneDefinition, b as ArrayUtils, bt as TooltipWrapperTriggerVariantProps, ct as accordionChevronDefinition, dt as accordionHeadingSubtitleDefinition, et as labelDefinition, ft as accordionHeadingTitleDefinition, g as QueriesUtils, gt as accordionPanelDefinition, h as RoutingUtils, ht as accordionPanelContentDefinition, it as formFieldHeaderDefinition, j as getKeyInteractionAction, jt as breadcrumbsDefinition, k as UseKeyInteractionsResult, kt as breadcrumbItemDefinition, l as InputDef, lt as accordionDefinition, m as ZodUtils, mt as accordionItemDefinition, nt as formFieldHelperDefinition, o as DynamicInputsOptions, ot as datePickerInputContentRowDefinition, pt as accordionIconDefinition, q as statusSeparatorDefinition, rt as formFieldErrorDefinition, s as dynamicInputs, st as AccordionVariantProps, tt as textAreaWrapperDefinition, ut as accordionHeadingDefinition, v as isEqual, vt as MenuPopover, w as KeyInteraction, wt as BreadcrumbItemVariantProps, x as useStateAndRef, xt as tooltipWrapperTriggerDefinition, y as DomUtils, yt as MenuPopoverProps, z as useDeepCompareEffect } from "./dynamicInputs-iP39lVKf.js";
79
+ import { $ as LabelConfig, A as createKeyInteractionsHandler, At as breadcrumbSegmentDefinition, B as useDeepCompareLayoutEffect, C as useLongPressRepeat, Ct as BreadcrumbIconVariantProps, D as KeyInteractionGroup, Dt as breadcrumbChevronDefinition, E as KeyInteractionCallback, Et as BreadcrumbsVariantProps, H as useDebounceCallback, J as popoverDefinition, K as statusIconDefinition, M as useKeyInteractions, N as useIntersectionObserver, O as KeyInteractions, Ot as breadcrumbIconDefinition, Q as LabelBaseProps, S as useScrollableListBox, St as BreadcrumbChevronVariantProps, T as KeyInteractionAction, Tt as BreadcrumbSegmentVariantProps, U as useBreakpoint, V as useDeepCompareMemo, X as selectInputTagsContentWrapperDefinition, Y as selectListBoxItemDefinition, Z as selectPopoverDefinition, _ as ObjectUtils, _t as accordionTriggerDefinition, a as DynamicInputsObjectSchema, at as fileUploadDropZoneDefinition, b as ArrayUtils, bt as TooltipWrapperTriggerVariantProps, ct as accordionChevronDefinition, dt as accordionHeadingSubtitleDefinition, et as labelDefinition, ft as accordionHeadingTitleDefinition, g as QueriesUtils, gt as accordionPanelDefinition, h as RoutingUtils, ht as accordionPanelContentDefinition, it as formFieldHeaderDefinition, j as getKeyInteractionAction, jt as breadcrumbsDefinition, k as UseKeyInteractionsResult, kt as breadcrumbItemDefinition, l as InputDef, lt as accordionDefinition, m as ZodUtils, mt as accordionItemDefinition, nt as formFieldHelperDefinition, o as DynamicInputsOptions, ot as datePickerInputContentRowDefinition, pt as accordionIconDefinition, q as statusSeparatorDefinition, rt as formFieldErrorDefinition, s as dynamicInputs, st as AccordionVariantProps, tt as textAreaWrapperDefinition, ut as accordionHeadingDefinition, v as isEqual, vt as MenuPopover, w as KeyInteraction, wt as BreadcrumbItemVariantProps, x as useStateAndRef, xt as tooltipWrapperTriggerDefinition, y as DomUtils, yt as MenuPopoverProps, z as useDeepCompareEffect } from "./dynamicInputs-ByVMnx4Z.js";
79
80
  import { a as stepperDefinition, c as stepperNumberDefinition, d as stepperTitleDefinition, i as StepperVariantProps, l as stepperSeparatorDefinition, n as StepItem, o as stepperIconDefinition, r as StepperProps, s as stepperItemDefinition, t as Stepper, u as stepperSubtextDefinition } from "./Stepper-TATlHZhQ.js";
80
81
  import { n as ToastProvider, t as ToastContainer } from "./ToastContainer-1H_IxvyH.js";
81
82
  import { C as HeaderText, D as CellText, E as ColumnConfigModalProps, O as CellTextProps, S as tableRowDefinition, T as ColumnConfigModal, _ as tableCellTextDefinition, a as DynamicColumnsOptions, b as tableHeadRowDefinition, c as PaginatedTableProps, d as InfiniteTableProps, f as InfiniteTableWrapperProps, g as TableRowVariantProps, h as TableWrapperProps, i as usePagination, l as PaginatedTableWrapperProps, m as TableProps, n as useTableColumnConfig, o as dynamicColumns, p as Table, r as useSorting, s as PaginatedTable, t as useTableNav, u as InfiniteTable, v as tableDataDefinition, w as HeaderTextProps, x as tableHeaderTextDefinition, y as tableHeadDataDefinition } from "./useTableNav-Ckj5PBRk.js";
82
83
  import { t as UIRouter } from "./router.context-CtafjXV7.js";
83
84
  import { t as ThemeContext } from "./theme.context-DfBt5Pz6.js";
84
- import { t as UIConfig } from "./uiConfig.context-DeBX2beU.js";
85
85
  import { n as useFilters, t as FilterStore } from "./useFilters-BxRScJdn.js";
86
86
  import { t as useLocalStorage } from "./useLocalStorage-DGsBUCT6.js";
87
87
  import { t as useTranslationMemo } from "./useTranslationMemo-Dy3p6m1g.js";
88
88
  import { t as StringUtils } from "./string.utils-Cj6AB7uZ.js";
89
89
  import { t as ToggleGroup } from "./ToggleGroup-CRFDIPGZ.js";
90
- import { i as useAutosave, n as UseFormAutosaveProps, r as useFormAutosave, t as Form } from "./Form-BJ12MjE-.js";
91
- import { n as InputsProps, t as Inputs } from "./Inputs-DA73LmLc.js";
90
+ import { i as useAutosave, n as UseFormAutosaveProps, r as useFormAutosave, t as Form } from "./Form-DbEWnCKc.js";
91
+ import { n as InputsProps, t as Inputs } from "./Inputs-O84btFJL.js";
92
92
  import { X as CloseIcon } from "lucide-react";
93
93
  export { Accordion, type AccordionItem, type AccordionItemProps, type AccordionProps, type AccordionVariantProps, Alert, AlertDialog, type AlertDialogProps, type AlertProps, ArrayUtils, Autocomplete, type AutocompleteProps, Badge, BadgeButton, type BadgeButtonProps, type BadgeButtonVariants, type BadgeProps, BottomSheet, type BottomSheetProps, type BreadcrumbChevronVariantProps, type BreadcrumbIconVariantProps, type BreadcrumbItem, type BreadcrumbItemVariantProps, type BreadcrumbSegmentVariantProps, Breadcrumbs, type BreadcrumbsProps, type BreadcrumbsVariantProps, Button, type ButtonProps, type ButtonVariantProps, CellText, type CellTextProps, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, type CheckboxVariantProps, CloseIcon, ColumnConfigModal, type ColumnConfigModalProps, type CompoundMapper, Confirmation, type ControlledAutocompleteProps, type ControlledCheckboxGroupProps, type ControlledCheckboxProps, type ControlledDatePickerProps, type ControlledDateRangePickerProps, type ControlledDateTimePickerProps, type ControlledInputProps, type ControlledNumberFieldProps, type ControlledNumberRangeInputProps, type ControlledPasswordInputProps, type ControlledRadioGroupProps, type ControlledSelectProps, type ControlledSliderProps, type ControlledSwitchProps, type ControlledTextAreaProps, type ControlledTimePickerProps, type ControlledToggleGroupProps, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, type DateRangeRelativeOption, type DateRangeResolvedValue, DateTimePicker, type DateTimePickerProps, DateTimeUtils, DateUtils, type DeepKeys, type DeepValue, type DefaultInitialSelectItem, Dialog, type DialogProps, DomUtils, Drawer, type DrawerProps, DropdownMenu, type DropdownMenuCvaVariantProps, type DropdownMenuProps, type DynamicColumnsOptions, type DynamicInputsObjectSchema, type DynamicInputsOptions, FileInput, type FileInputProps, FileUpload, FileUploadContainer, type FileUploadContainerProps, type FileUploadError, type FileUploadProps, type FileUploadRequest, type FileUploadState, FileUtils, type FilterStore, Form, FormField, type FormFieldProps, type FormSubmitErrorHandler, type FormSubmitHandler, type Function, type HasRequiredProperty, HeaderText, type HeaderTextProps, IconButton, type IconButtonProps, IconSlot, type IconSlotIcon, type IconSlotProps, type IfAny, InfiniteTable, type InfiniteTableProps, type InfiniteTableWrapperProps, InlineIconButton, type InlineIconButtonProps, Input, type InputDef, type InputProps, type InputVariantProps, Inputs, type InputsProps, IntlUtils, type IsAny, type IsRequiredChildrenProperty, type IsUnknown, type KeyInteraction, type KeyInteractionAction, type KeyInteractionCallback, type KeyInteractionGroup, type KeyInteractions, type LabelBaseProps, type LabelConfig, Link, LinkContext, type LinkNavigationProps, type LinkProps, type LinkVariantProps, MenuItem, type MenuItemVariantProps, type MenuListItemProps, MenuPopover, type MenuPopoverProps, type MenuPopoverVariantProps, type MenuPopoverWrapperVariantProps, NumberField, type NumberFieldProps, NumberRangeInput, type NumberRangeInputProps, type NumberRangeValue, ObjectUtils, type OmitDiscriminatedUnion, PaginatedTable, type PaginatedTableProps, type PaginatedTableWrapperProps, Pagination, PaginationList, type PaginationProps, PasswordInput, type PasswordInputProps, Popover, type PopoverProps, Progress, type ProgressConfig, type ProgressTrackConfig, type ProgressVariantProps, QueriesUtils, QueryAutocomplete, QuerySelect, type QuerySelectProps, RadioGroup, type RadioGroupProps, type RadioVariantProps, RoutingUtils, Select, type SelectAsyncProps, type SelectBaseProps, type SelectItem, type SelectProps, Slider, type SliderProps, Spinner, type SpinnerProps, SplitButton, type SplitButtonProps, type StepItem, Stepper, type StepperProps, type StepperVariantProps, StringUtils, Switch, type SwitchProps, Table, type TableProps, type TableRowVariantProps, type TableWrapperProps, Tag, type TagProps, type TagVariantProps, TextArea, type TextAreaProps, TextButton, type TextButtonProps, ThemeContext, TimePicker, type TimePickerProps, Toast, type ToastAction, ToastContainer, type ToastOptions, type ToastParams, type ToastProps, ToastProvider, type ToastVariantProps, ToggleButton, type ToggleButtonProps, ToggleGroup, type ToggleGroupProps, Tooltip, TooltipEllipsis, type TooltipEllipsisProps, type TooltipProps, type TooltipWrapperTriggerVariantProps, Typography, type TypographyProps, type TypographyVariantProps, UIConfig, type UIForm, UIOverrides, UIRouter, type UseFormAutosaveProps, type UseFormProps, type UseKeyInteractionsResult, ZodUtils, accordionChevronDefinition, accordionDefinition, accordionHeadingDefinition, accordionHeadingSubtitleDefinition, accordionHeadingTitleDefinition, accordionIconDefinition, accordionItemDefinition, accordionPanelContentDefinition, accordionPanelDefinition, accordionTriggerDefinition, alertDefinition, badgeButtonContentDefinition, badgeButtonDefinition, breadcrumbChevronDefinition, breadcrumbIconDefinition, breadcrumbItemDefinition, breadcrumbSegmentDefinition, breadcrumbsDefinition, buttonContentDefinition, buttonDefinition, buttonIconSizeDefinition, buttonSizeDefinition, checkboxContentRowDefinition, checkboxContentWrapperDefinition, checkboxDefinition, checkboxGroupLabelDefinition, checkboxIconDefinition, compoundMapper, createKeyInteractionsHandler, datePickerInputContentRowDefinition, dialogContentDefinition, dialogMainDefinition, dialogOverlayDefinition, dropdownMenuDefinition, dynamicColumns, dynamicInputs, fileInputButtonDefinition, fileInputDropZoneDefinition, fileUploadDropZoneDefinition, formFieldErrorDefinition, formFieldHeaderDefinition, formFieldHelperDefinition, getKeyInteractionAction, iconSlotDefinition, inputBaseDefinition, inputClearClassDefinition, inputContentWrapperDefinition, inputSideDefinition, inputSizeDefinition, isEqual, labelDefinition, linkDefinition, logger, menuItemDefinition, menuPopoverDefinition, menuPopoverWrapperDefinition, ns, popoverDefinition, progressDefinition, progressFillDefinition, progressTrackDefinition, progressTrackWrapperDefinition, progressValueDefinition, radioContentRowDefinition, radioContentWrapperDefinition, radioDefinition, resources, selectInputTagsContentWrapperDefinition, selectListBoxItemDefinition, selectPopoverDefinition, spinnerDefinition, spinnerWrapperDefinition, statusIconDefinition, statusSeparatorDefinition, stepperDefinition, stepperIconDefinition, stepperItemDefinition, stepperNumberDefinition, stepperSeparatorDefinition, stepperSubtextDefinition, stepperTitleDefinition, switchDefinition, tableCellTextDefinition, tableDataDefinition, tableHeadDataDefinition, tableHeadRowDefinition, tableHeaderTextDefinition, tableRowDefinition, tagDefinition, textAreaWrapperDefinition, toastDefinition, statusIconDefinition$1 as toastStatusIconDefinition, statusSeparatorDefinition$1 as toastStatusSeparatorDefinition, toggleGroupDefinition, toggleGroupItemDefinition, tooltipDefinition, tooltipPointerHorizontalDefinition, tooltipPointerVerticalDefinition, tooltipTextDefinition, tooltipWrapperTriggerDefinition, typographyDefinition, uiOutlineClass, useAutosave, useBreakpoint, useDebounceCallback, useDeepCompareEffect, useDeepCompareLayoutEffect, useDeepCompareMemo, useFilters, useForm, useFormAutosave, useFormState, useFormValue, useIntersectionObserver, useKeyInteractions, useLocalStorage, useLongPressRepeat, usePagination, useScrollableListBox, useSorting, useStateAndRef, useTableColumnConfig, useTableNav, useToast, useTranslationMemo };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@povio/ui",
3
- "version": "5.0.0-rc.7",
3
+ "version": "5.0.0-rc.9",
4
4
  "type": "module",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -296,6 +296,16 @@
296
296
  "import": "./dist/config/ui-configurator.js",
297
297
  "default": "./dist/config/ui-configurator.js"
298
298
  },
299
+ "./app-canvas": {
300
+ "types": "./dist/config/app-canvas.d.ts",
301
+ "import": "./dist/config/app-canvas.js",
302
+ "default": "./dist/config/app-canvas.js"
303
+ },
304
+ "./app-canvas/tanstack": {
305
+ "types": "./dist/config/app-canvas-tanstack.d.ts",
306
+ "import": "./dist/config/app-canvas-tanstack.js",
307
+ "default": "./dist/config/app-canvas-tanstack.js"
308
+ },
299
309
  "./ui-configurator/vite": {
300
310
  "types": "./dist/config/ui-configurator-vite.d.ts",
301
311
  "import": "./dist/config/ui-configurator-vite.js",
@@ -1328,6 +1338,7 @@
1328
1338
  },
1329
1339
  "./rich-text-editor/styles": "./dist/styles/editor.css",
1330
1340
  "./ui-configurator/styles": "./dist/styles/configurator.css",
1341
+ "./app-canvas/styles": "./dist/styles/app-canvas.css",
1331
1342
  "./color-utilities": "./dist/styles/color-utilities.css",
1332
1343
  "./tw-ui-plugin": {
1333
1344
  "types": "./dist/tw-ui-plugin.d.ts",
@@ -1401,6 +1412,7 @@
1401
1412
  "@react-stately/datepicker": "^3.16.0",
1402
1413
  "@tanstack/react-form": "^1.33.2",
1403
1414
  "@tanstack/react-query": "^5.89.0",
1415
+ "@tanstack/react-router": "^1.136.8",
1404
1416
  "@tanstack/react-table": "^9.0.0",
1405
1417
  "@tanstack/store": "^0.11.0",
1406
1418
  "@tiptap/core": "^3.19.0",
@@ -1501,6 +1513,9 @@
1501
1513
  },
1502
1514
  "@tiptap/starter-kit": {
1503
1515
  "optional": true
1516
+ },
1517
+ "@tanstack/react-router": {
1518
+ "optional": true
1504
1519
  }
1505
1520
  }
1506
1521
  }
@@ -1,163 +0,0 @@
1
- //#region src/configurator/inspector/token-classes.ts
2
- /** Tailwind breakpoints from the Atlas base theme, in rem. */
3
- const breakpoints = {
4
- sm: 23.75,
5
- md: 37.5,
6
- lg: 80,
7
- xl: 105
8
- };
9
- /** Utility prefix → the slots it sets, its specificity, and the theme namespace its value lives in. */
10
- const utilities = [
11
- [
12
- "p",
13
- [
14
- "padding.top",
15
- "padding.right",
16
- "padding.bottom",
17
- "padding.left"
18
- ],
19
- 0,
20
- "spacing"
21
- ],
22
- [
23
- "px",
24
- ["padding.left", "padding.right"],
25
- 1,
26
- "spacing"
27
- ],
28
- [
29
- "py",
30
- ["padding.top", "padding.bottom"],
31
- 1,
32
- "spacing"
33
- ],
34
- [
35
- "pt",
36
- ["padding.top"],
37
- 2,
38
- "spacing"
39
- ],
40
- [
41
- "pr",
42
- ["padding.right"],
43
- 2,
44
- "spacing"
45
- ],
46
- [
47
- "pe",
48
- ["padding.right"],
49
- 2,
50
- "spacing"
51
- ],
52
- [
53
- "pb",
54
- ["padding.bottom"],
55
- 2,
56
- "spacing"
57
- ],
58
- [
59
- "pl",
60
- ["padding.left"],
61
- 2,
62
- "spacing"
63
- ],
64
- [
65
- "ps",
66
- ["padding.left"],
67
- 2,
68
- "spacing"
69
- ],
70
- [
71
- "gap",
72
- ["gap.row", "gap.column"],
73
- 0,
74
- "spacing"
75
- ],
76
- [
77
- "gap-x",
78
- ["gap.column"],
79
- 1,
80
- "spacing"
81
- ],
82
- [
83
- "gap-y",
84
- ["gap.row"],
85
- 1,
86
- "spacing"
87
- ],
88
- [
89
- "rounded",
90
- ["radius"],
91
- 0,
92
- "radius"
93
- ]
94
- ];
95
- /** Splits `md:hover:px-4` into its variants and utility, ignoring colons inside `[...]` / `(...)`. */
96
- function splitVariants(className) {
97
- const parts = [];
98
- let depth = 0;
99
- let current = "";
100
- for (const char of className) {
101
- if (char === "[" || char === "(") depth++;
102
- if (char === "]" || char === ")") depth--;
103
- if (char === ":" && depth === 0) {
104
- parts.push(current);
105
- current = "";
106
- } else current += char;
107
- }
108
- return {
109
- variants: parts,
110
- utility: current
111
- };
112
- }
113
- /** Breakpoint weight when every variant is an active breakpoint; `undefined` for state variants or inactive breakpoints. */
114
- function variantWeight(variants, viewportWidth, rootFontSize) {
115
- let weight = 0;
116
- for (const variant of variants) {
117
- const max = variant.startsWith("max-");
118
- const size = breakpoints[max ? variant.slice(4) : variant];
119
- if (size === void 0) return void 0;
120
- if (!(max ? viewportWidth < size * rootFontSize : viewportWidth >= size * rootFontSize)) return void 0;
121
- weight = Math.max(weight, size);
122
- }
123
- return weight;
124
- }
125
- function tokenFor(value, namespace, isKnown) {
126
- const referenced = value.match(/^\[.*?var\((--[\w-]+)/)?.[1] ?? value.match(/^\((--[\w-]+)\)$/)?.[1];
127
- if (referenced) return isKnown(referenced) ? referenced : void 0;
128
- const name = `--${namespace}-${value}`;
129
- return isKnown(name) ? name : void 0;
130
- }
131
- /**
132
- * Resolves which theme tokens drive an element's padding, gap and radius from its rendered Tailwind classes.
133
- * Only tokens accepted by `isKnown` are returned, so every result can be opened in the editor.
134
- */
135
- function inspectTokens(className, isKnown, viewportWidth = Infinity, rootFontSize = 16) {
136
- const winners = /* @__PURE__ */ new Map();
137
- for (const raw of className.split(/\s+/).filter(Boolean)) {
138
- const { variants, utility } = splitVariants(raw);
139
- const weight = variantWeight(variants, viewportWidth, rootFontSize);
140
- if (weight === void 0) continue;
141
- const clean = utility.replace(/^!|!$/g, "");
142
- for (const [prefix, slots, specificity, namespace] of utilities) {
143
- if (!clean.startsWith(`${prefix}-`)) continue;
144
- const token = tokenFor(clean.slice(prefix.length + 1), namespace, isKnown);
145
- if (!token) continue;
146
- const rank = weight * 10 + specificity;
147
- for (const slot of slots) if ((winners.get(slot)?.rank ?? -1) <= rank) winners.set(slot, {
148
- token,
149
- rank
150
- });
151
- }
152
- }
153
- const result = {
154
- padding: {},
155
- gap: {}
156
- };
157
- for (const [slot, { token }] of winners) if (slot === "radius") result.radius = token;
158
- else if (slot.startsWith("gap.")) result.gap[slot.slice(4)] = token;
159
- else result.padding[slot.slice(8)] = token;
160
- return result;
161
- }
162
- //#endregion
163
- export { splitVariants as n, inspectTokens as t };