@astryx-vue/core 0.2.2 → 0.2.3
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/THIRD_PARTY_NOTICES.md +2 -0
- package/dist/AppShell/index.d.ts +1 -1
- package/dist/AppShell/index.js +1 -1
- package/dist/{AppShell-Cb41gIAj.js → AppShell-Dd-D4bA2.js} +2 -2
- package/dist/AvatarGroup/index.d.ts +1 -1
- package/dist/Banner/index.d.ts +1 -1
- package/dist/Breadcrumbs/index.d.ts +3 -2
- package/dist/Breadcrumbs/index.js +3 -2
- package/dist/{Breadcrumbs-CTQ7fjDn.js → Breadcrumbs-CWGfgLNK.js} +13 -8
- package/dist/Button/index.d.ts +1 -1
- package/dist/ButtonGroup/index.d.ts +1 -1
- package/dist/Calendar/index.d.ts +2 -2
- package/dist/Calendar/index.js +1 -1
- package/dist/Calendar-CnOsSjMY.js +656 -0
- package/dist/Card/index.d.ts +1 -1
- package/dist/Carousel/index.js +1 -1
- package/dist/{Carousel-X0cuQkvg.js → Carousel-JA7ilqI_.js} +2 -2
- package/dist/Chat/index.d.ts +1 -1
- package/dist/Chat/index.js +1 -1
- package/dist/{Chat-M0tiGrNT.js → Chat-C7WrCOE4.js} +3 -3
- package/dist/CheckboxIndicator/index.js +1 -1
- package/dist/CheckboxIndicator-D37cm2Rh.js +68 -0
- package/dist/CheckboxInput/index.d.ts +1 -1
- package/dist/CheckboxInput/index.js +1 -1
- package/dist/{CheckboxInput-CMsEE1_4.js → CheckboxInput-25Q8ItH-.js} +10 -9
- package/dist/CheckboxList/index.d.ts +1 -1
- package/dist/CheckboxList/index.js +1 -1
- package/dist/{CheckboxList-BbCPiend.js → CheckboxList-CnCGnkZk.js} +77 -24
- package/dist/Citation/index.js +1 -1
- package/dist/{Citation-C1veUk5p.js → Citation-CtwrU33I.js} +2 -2
- package/dist/ClickableCard/index.d.ts +1 -1
- package/dist/Code/index.d.ts +1 -1
- package/dist/Code/index.js +2 -2
- package/dist/{Code-yb_KOFtJ.js → Code-BvefYRpx.js} +2 -1
- package/dist/{CodeBlock-DesTJAkm.js → CodeBlock-BZGzYeoL.js} +1 -1
- package/dist/Collapsible/index.d.ts +1 -1
- package/dist/Collapsible/index.js +1 -1
- package/dist/{Collapsible-BestK35V.js → Collapsible-3YerR-FO.js} +1 -1
- package/dist/CommandPalette/index.js +1 -1
- package/dist/{CommandPalette-BArt97V8.js → CommandPalette-BNbM9T9y.js} +1 -1
- package/dist/ComplexSelector/index.d.ts +1 -1
- package/dist/ComplexSelector/index.js +1 -1
- package/dist/{ComplexSelector-CAoig1RK.js → ComplexSelector-LtbLlrcj.js} +3 -3
- package/dist/ContextMenu/index.d.ts +3 -2
- package/dist/ContextMenu/index.js +3 -2
- package/dist/{ContextMenu-9Im6i43E.js → ContextMenu-DVQl0xL5.js} +204 -56
- package/dist/DateInput/index.d.ts +2 -2
- package/dist/DateInput/index.js +1 -1
- package/dist/DateInput-zm8sNc0t.js +743 -0
- package/dist/DateRangeInput/index.d.ts +1 -1
- package/dist/DateRangeInput/index.js +1 -1
- package/dist/{DateRangeInput-DwDy3eRo.js → DateRangeInput-DlVFzrf7.js} +54 -19
- package/dist/DateTimeInput/index.d.ts +1 -1
- package/dist/DateTimeInput/index.js +1 -1
- package/dist/{DateTimeInput-BYiaC9bn.js → DateTimeInput-C7Z-p6Yd.js} +54 -15
- package/dist/Dialog/index.d.ts +1 -1
- package/dist/DropdownMenu/index.d.ts +3 -3
- package/dist/DropdownMenu/index.js +4 -3
- package/dist/{DropdownMenu-Dh-WAHKb.js → DropdownMenu-BoZChdev.js} +308 -63
- package/dist/DropdownMenu-u1psFjis.js +325 -0
- package/dist/DropdownMenuRadioItem.vue-uVM0FD2f.d.ts +564 -0
- package/dist/FileInput/index.d.ts +1 -1
- package/dist/FileInput/index.js +1 -1
- package/dist/{FileInput-DLO6V12n.js → FileInput-QdlZn7qK.js} +2 -2
- package/dist/Icon/index.d.ts +4 -3
- package/dist/Icon/index.js +2 -2
- package/dist/{Icon-CJKjdJy-.js → Icon-bteSId7T.js} +113 -18
- package/dist/Indicator/index.d.ts +3 -0
- package/dist/Indicator/index.js +2 -0
- package/dist/InputGroup/index.d.ts +2 -2
- package/dist/InputGroup/index.js +3 -2
- package/dist/InputGroup-BzR6JRZb.js +129 -0
- package/dist/Lightbox/index.js +1 -1
- package/dist/{Lightbox-CdFCS_EA.js → Lightbox-BSzfqZ-u.js} +2 -2
- package/dist/List/index.d.ts +1 -1
- package/dist/Markdown/index.js +1 -1
- package/dist/{Markdown-BqKloI3w.js → Markdown-B6tSqenv.js} +8 -5
- package/dist/MetadataList/index.js +1 -1
- package/dist/{MetadataList-CvZkmisf.js → MetadataList-aN1tRn6W.js} +1 -1
- package/dist/MobileNav/index.js +1 -1
- package/dist/{MobileNavToggle-Bwi0qXXM.js → MobileNavToggle-fqcSafkc.js} +1 -1
- package/dist/MoreMenu/index.d.ts +1 -1
- package/dist/MoreMenu/index.js +1 -1
- package/dist/{MoreMenu-BwJaJrkB.js → MoreMenu-B3brqdK_.js} +1 -1
- package/dist/MultiSelector/index.d.ts +2 -2
- package/dist/MultiSelector/index.js +1 -1
- package/dist/{MultiSelector-C-ETfFy_.js → MultiSelector-BD5PMgez.js} +303 -121
- package/dist/{NavDisclosure-DHrSNRDR.js → NavDisclosure-DbYLDXK0.js} +1 -1
- package/dist/NavItem/index.d.ts +1 -1
- package/dist/NavMenu/index.js +2 -2
- package/dist/{NavMenuItem-B-k7olt5.js → NavMenuItem-DrwIMHKO.js} +1 -1
- package/dist/NumberInput/index.d.ts +1 -1
- package/dist/NumberInput/index.js +1 -1
- package/dist/{NumberInput-DjetVB8O.js → NumberInput-CBeU4lEl.js} +1 -1
- package/dist/Outline/index.js +1 -1
- package/dist/{Outline-Bz9c-u5y.js → Outline--HVMSB6i.js} +1 -1
- package/dist/OverflowList/index.d.ts +1 -1
- package/dist/OverflowList/index.js +1 -1
- package/dist/{OverflowList-ED-KN9Y5.js → OverflowList-FMh7r-r_.js} +3 -3
- package/dist/Pagination/index.d.ts +1 -1
- package/dist/Pagination/index.js +1 -1
- package/dist/{Pagination-Cb66HMEf.js → Pagination-DlIvESjx.js} +2 -2
- package/dist/Popover/index.d.ts +1 -1
- package/dist/Popover/index.js +1 -1
- package/dist/{Popover-Crhk9PNP.js → Popover-D7zqpFwU.js} +1 -1
- package/dist/PowerSearch/index.d.ts +1 -1
- package/dist/PowerSearch/index.js +1 -1
- package/dist/{PowerSearch-CjU8y4mi.js → PowerSearch-CMG7Rb69.js} +14 -14
- package/dist/ProgressBar/index.d.ts +1 -1
- package/dist/Radio/index.d.ts +1 -1
- package/dist/Radio/index.js +1 -1
- package/dist/{RadioGroup-BqjdSCfJ.js → RadioGroup-CBqUPq_L.js} +16 -8
- package/dist/RadioList/index.d.ts +1 -1
- package/dist/RadioList/index.js +1 -1
- package/dist/{RadioList-DI8ujXcT.js → RadioList-CPOJn9Th.js} +1 -1
- package/dist/Resizable/index.js +1 -1
- package/dist/{Resizable-D-TBCg0Y.js → Resizable-CXpvj1TZ.js} +1 -1
- package/dist/ScrollableArea/index.d.ts +1 -1
- package/dist/SegmentedControl/index.d.ts +1 -1
- package/dist/SelectableCard/index.d.ts +1 -1
- package/dist/Selector/index.d.ts +2 -2
- package/dist/Selector/index.js +1 -1
- package/dist/Selector-BpPnuWH3.js +618 -0
- package/dist/SideNav/index.d.ts +1 -1
- package/dist/SideNav/index.js +1 -1
- package/dist/{SideNav-DonEfiAx.js → SideNav-D4TupqgE.js} +3 -3
- package/dist/Stack/index.d.ts +1 -1
- package/dist/Stepper/index.d.ts +1 -1
- package/dist/Stepper/index.js +1 -1
- package/dist/{Stepper-D2ZIcUNx.js → Stepper-H-6-T5Ps.js} +1 -1
- package/dist/Switch/index.d.ts +1 -1
- package/dist/TabList/index.d.ts +1 -1
- package/dist/TabList/index.js +1 -1
- package/dist/{TabList-D3F-stq-.js → TabList-BlzkrObv.js} +2 -2
- package/dist/Table/index.js +1 -1
- package/dist/{Table-CrP2Uffq.js → Table-nqA_njNz.js} +6 -6
- package/dist/TextArea/index.d.ts +1 -1
- package/dist/TextInput/index.d.ts +1 -1
- package/dist/Theme/index.d.ts +2 -1
- package/dist/Theme/index.js +1 -1
- package/dist/{Theme-BuUiiJNr.js → Theme-CejS9MHm.js} +21 -3
- package/dist/Thumbnail/index.js +1 -1
- package/dist/{Thumbnail-BC5JGPGZ.js → Thumbnail-CXb3m_Hv.js} +2 -2
- package/dist/{TimeField-DpHFrNv0.js → TimeField-B3cndWb0.js} +2 -2
- package/dist/TimeInput/index.d.ts +1 -1
- package/dist/TimeInput/index.js +1 -1
- package/dist/{TimeInput-DJLV0_4z.js → TimeInput-BHQ_LKGm.js} +1 -1
- package/dist/Timestamp/index.d.ts +1 -1
- package/dist/Timestamp/index.js +1 -1
- package/dist/{Timestamp-GKNjjt5g.js → Timestamp-Cfuxbb3i.js} +2 -2
- package/dist/ToggleButton/index.d.ts +1 -1
- package/dist/Token/index.d.ts +1 -1
- package/dist/Token/index.js +1 -1
- package/dist/{Token-Chu_eCVs.js → Token-CdVLH0_H.js} +2 -2
- package/dist/Tokenizer/index.d.ts +1 -1
- package/dist/Tokenizer/index.js +1 -1
- package/dist/{Tokenizer-DRDpvQ_l.js → Tokenizer-DlD-S_8-.js} +3 -3
- package/dist/Toolbar/index.d.ts +1 -1
- package/dist/TopNav/index.d.ts +1 -1
- package/dist/TopNav/index.js +1 -1
- package/dist/{TopNav-CEyWddtA.js → TopNav-DzV874G7.js} +5 -5
- package/dist/TreeList/index.js +1 -1
- package/dist/{TreeList-COS8US8e.js → TreeList-DEwvlZRV.js} +2 -2
- package/dist/Typeahead/index.d.ts +1 -1
- package/dist/Typeahead/index.js +1 -1
- package/dist/{Typeahead-P7cCqtaQ.js → Typeahead-DQ3tmqYe.js} +3 -3
- package/dist/{context-O2Vb8cJl.js → colorMode-CBgdgDSn.js} +1 -7
- package/dist/composables/index.d.ts +2 -2
- package/dist/composables/index.js +10 -5
- package/dist/{composables-CVfjp9h4.js → composables-DDI08XFF.js} +98 -1
- package/dist/context-Cws_tXTr.js +7 -0
- package/dist/context-D5-MwxnN.js +4 -0
- package/dist/{context-CiKncNSH.js → context-DmOLCubj.js} +82 -8
- package/dist/{index-DimuSES0.d.ts → index-B1x05arQ.d.ts} +3 -1
- package/dist/index-B9f1rUEv.d.ts +77 -0
- package/dist/{index-D-ZuubCK.d.ts → index-BB5yVIN-.d.ts} +2 -2
- package/dist/{index-Bu0Zd1uw.d.ts → index-BMn9ghAX.d.ts} +3 -3
- package/dist/{index-CJlBAXwj.d.ts → index-BRfR0lhb.d.ts} +41 -4
- package/dist/{index-DNRBbwp_.d.ts → index-BTAgQRP0.d.ts} +758 -111
- package/dist/{index-DA52oIdw.d.ts → index-BcJBLWJ0.d.ts} +2 -2
- package/dist/{index-jdjcb3Js.d.ts → index-Bqb_Fyju.d.ts} +2 -2
- package/dist/{index-CNjbOgty.d.ts → index-C-QpeUlQ.d.ts} +2 -2
- package/dist/{index-DGXviOlp.d.ts → index-C2sfHfBw.d.ts} +31 -5
- package/dist/{index-By2mSzUA.d.ts → index-CA6RbRWx.d.ts} +1 -1
- package/dist/{index-gW0HW02U.d.ts → index-COxy6LEW.d.ts} +1 -1
- package/dist/{index-CVn0GBdB.d.ts → index-Ca8VIE4l.d.ts} +1 -1
- package/dist/{index-CRizexSC.d.ts → index-Ch6BbxCP.d.ts} +2 -67
- package/dist/{index-DWH_HzXi.d.ts → index-ChWlKHjc.d.ts} +1 -1
- package/dist/{index-kVhSuA9t.d.ts → index-Ctu32CLv.d.ts} +4 -4
- package/dist/{index-DOUEn7V0.d.ts → index-D1Twv_fL.d.ts} +65 -6
- package/dist/{index-D_nYxnNv.d.ts → index-D7-WTV6I.d.ts} +1 -1
- package/dist/{index-c_TaW8mM.d.ts → index-D8o50qOE.d.ts} +1 -1
- package/dist/{index-D4I_obqR.d.ts → index-DAiGhkNZ.d.ts} +1 -1
- package/dist/{index-Cs5pcwY3.d.ts → index-DMQG6kdM.d.ts} +3 -3
- package/dist/index-D_UEJIU5.d.ts +83 -0
- package/dist/{index-fa72tWIU.d.ts → index-DkVEBdWa.d.ts} +2 -2
- package/dist/{index-B1TG2GPS.d.ts → index-DxsKyAxq.d.ts} +116 -44
- package/dist/{index-BHqRH7QW.d.ts → index-FEy8qFSD.d.ts} +2 -2
- package/dist/{index-qiZtHnGK.d.ts → index-LIyvJTW3.d.ts} +39 -0
- package/dist/{index-BKr7yvVv.d.ts → index-MPcg1Pm4.d.ts} +1 -1
- package/dist/{index-cGagYM1g.d.ts → index-ViSV0RBx.d.ts} +1 -1
- package/dist/{index-C7mxUcDR.d.ts → index-f4NGT-e2.d.ts} +4 -4
- package/dist/{index-DsyKhauk.d.ts → index-foQMNKZO.d.ts} +1 -1
- package/dist/{index-u5ozu0G7.d.ts → index-vP0EtrJJ.d.ts} +13 -3
- package/dist/{index-CZeoAr0a.d.ts → index-xfkEuGLY.d.ts} +2 -2
- package/dist/index.d.ts +76 -75
- package/dist/index.js +115 -107
- package/dist/locale/index.d.ts +1 -1
- package/dist/locale/index.js +2 -2
- package/dist/{locale-Cpk_nrLA.js → locale-CCwVnyMZ.js} +25 -1
- package/dist/searchResultMessage-DN0HeRRB.js +94 -0
- package/dist/semantic-CKH9XVqa.d.ts +54 -0
- package/dist/{types-pnljWjEE.d.ts → types-CwyibrRB.d.ts} +12 -11
- package/dist/types-jmqqnkKA.d.ts +163 -0
- package/dist/{useAnchoredListbox-7W90Ny-9.js → useAnchoredListbox-BN9LQnon.js} +1 -1
- package/dist/useDatePresentation-C07PnOCw.js +21 -0
- package/dist/{useMonthGrid-CmJsZTcB.js → useDateRange-CIXoE_8k.js} +1 -42
- package/dist/useDisclosureHandle-Df3HhAfC.js +24 -0
- package/dist/{useDismiss-CAiHU6QD.js → useDismiss-Cj8x_51F.js} +8 -4
- package/dist/useFieldControlState-voICDrys.js +18 -0
- package/dist/useHandleRef-6cdKugm8.js +17 -0
- package/dist/useIndicator-i1NORM7W.js +147 -0
- package/dist/useMenuDrillIn-OaEwjK44.js +520 -0
- package/dist/useMonthGrid-fGHSSrFc.js +43 -0
- package/dist/usePendingChange-ib-h8FZK.js +25 -0
- package/dist/useSubmenuMode-CZN9qrUo.js +37 -0
- package/package.json +5 -1
- package/styles/calendar.css +38 -3
- package/styles/check-indicator.css +17 -0
- package/styles/checkbox-indicator.css +29 -10
- package/styles/checkbox-input.css +0 -11
- package/styles/date-input.css +48 -0
- package/styles/dropdown-menu.css +163 -0
- package/styles/field.css +48 -0
- package/styles/icon.css +51 -3
- package/styles/input-group.css +32 -3
- package/styles/multi-selector.css +26 -0
- package/styles/radio-indicator.css +90 -0
- package/styles/radio.css +9 -42
- package/styles/selector.css +112 -14
- package/styles.css +2 -0
- package/dist/Calendar-BFaI5AMv.js +0 -352
- package/dist/CheckboxIndicator-DdJmksHt.js +0 -52
- package/dist/DateInput-BLocxqC3.js +0 -376
- package/dist/DropdownMenu-Ddfr-aEC.js +0 -164
- package/dist/InputGroup-ChrFVxzV.js +0 -42
- package/dist/Selector-DE2IEFML.js +0 -468
- package/dist/index-Bgv4ZmBl.d.ts +0 -72
- package/dist/index-DN7MXPHM.d.ts +0 -398
- package/dist/index-IbUN4M8V.d.ts +0 -40
- package/dist/types-DDAAT1Xd.d.ts +0 -285
- package/dist/useGridRovingFocus-DQQAOYH5.js +0 -99
- /package/dist/{index-BUXNRekN.d.ts → index-BXkNZF3q.d.ts} +0 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { n as SyntaxThemeDefinition } from "./syntaxTheme-Bcs1YMF7.js";
|
|
2
|
+
import { t as SemanticIconMap } from "./semantic-CKH9XVqa.js";
|
|
3
|
+
import { Component } from "vue";
|
|
4
|
+
//#region src/Indicator/types.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Each family owns its own states.
|
|
7
|
+
*
|
|
8
|
+
* A radio is only chosen or not. A checkbox can also be partial. Keeping the
|
|
9
|
+
* families apart means a radio graphic is never asked to draw a mixed state.
|
|
10
|
+
*/
|
|
11
|
+
interface IndicatorFamilyMap {
|
|
12
|
+
singleSelection: 'unchecked' | 'checked';
|
|
13
|
+
multiSelection: 'unchecked' | 'checked' | 'indeterminate';
|
|
14
|
+
}
|
|
15
|
+
type IndicatorFamily = keyof IndicatorFamilyMap & string;
|
|
16
|
+
type IndicatorState<F extends IndicatorFamily = IndicatorFamily> = IndicatorFamilyMap[F];
|
|
17
|
+
/** Matches the control sizes of the inputs that draw these graphics. */
|
|
18
|
+
type IndicatorSize = 'sm' | 'md';
|
|
19
|
+
/**
|
|
20
|
+
* Which edge of a row the mark sits on.
|
|
21
|
+
*
|
|
22
|
+
* Logical, not physical: start is the left edge in left-to-right text.
|
|
23
|
+
* The row decides this. The graphic itself has no position.
|
|
24
|
+
*/
|
|
25
|
+
type IndicatorPosition = 'start' | 'end';
|
|
26
|
+
/**
|
|
27
|
+
* Props every indicator accepts.
|
|
28
|
+
*
|
|
29
|
+
* The graphic is decorative. The control that draws it keeps the input, the
|
|
30
|
+
* role, the accessible name, and the keyboard. Hover and focus reach the
|
|
31
|
+
* graphic through the `astryx-indicator-scope` class on that control, not
|
|
32
|
+
* through a prop.
|
|
33
|
+
*/
|
|
34
|
+
interface IndicatorProps<F extends IndicatorFamily = IndicatorFamily> {
|
|
35
|
+
/** Which state to draw. The family decides which states exist. */
|
|
36
|
+
state: IndicatorState<F>;
|
|
37
|
+
/**
|
|
38
|
+
* Control size. `sm` is 20px and `md` is 24px.
|
|
39
|
+
* @default 'md'
|
|
40
|
+
*/
|
|
41
|
+
size?: IndicatorSize;
|
|
42
|
+
/**
|
|
43
|
+
* Whether the owning control is disabled. Visual only.
|
|
44
|
+
* @default false
|
|
45
|
+
*/
|
|
46
|
+
isDisabled?: boolean;
|
|
47
|
+
}
|
|
48
|
+
/** A component that can stand in for one indicator name. */
|
|
49
|
+
type IndicatorComponent<F extends IndicatorFamily = IndicatorFamily> = Component<IndicatorProps<F>>;
|
|
50
|
+
/**
|
|
51
|
+
* Names a theme can replace.
|
|
52
|
+
*
|
|
53
|
+
* Packages can add names by augmenting this interface. Core has no default
|
|
54
|
+
* for a name it does not know, so `getIndicator` returns undefined for those
|
|
55
|
+
* and the caller supplies the fallback.
|
|
56
|
+
*/
|
|
57
|
+
interface IndicatorMap {
|
|
58
|
+
/** The mark on a chosen option. A check by default, and nothing when unchosen. */
|
|
59
|
+
check: 'singleSelection';
|
|
60
|
+
/** The circle of a radio. */
|
|
61
|
+
radio: 'singleSelection';
|
|
62
|
+
/** The box of a checkbox, including the partial state. */
|
|
63
|
+
checkbox: 'multiSelection';
|
|
64
|
+
}
|
|
65
|
+
type IndicatorName = keyof IndicatorMap & string;
|
|
66
|
+
type CoreIndicatorName = 'check' | 'checkbox' | 'radio';
|
|
67
|
+
/**
|
|
68
|
+
* Theme overrides, keyed by indicator name.
|
|
69
|
+
*
|
|
70
|
+
* One entry replaces that graphic everywhere it is drawn. Mapping `check` to
|
|
71
|
+
* the radio graphic turns every single-selection mark into a radio.
|
|
72
|
+
*/
|
|
73
|
+
interface IndicatorRegistry {
|
|
74
|
+
check?: IndicatorComponent<'singleSelection'>;
|
|
75
|
+
radio?: IndicatorComponent<'singleSelection'>;
|
|
76
|
+
checkbox?: IndicatorComponent<'multiSelection'>;
|
|
77
|
+
[name: string]: Component | undefined;
|
|
78
|
+
}
|
|
79
|
+
//#endregion
|
|
80
|
+
//#region src/Theme/types.d.ts
|
|
81
|
+
/** Color mode for a theme subtree. `system` follows the page and the OS. */
|
|
82
|
+
type ThemeMode = 'light' | 'dark' | 'system';
|
|
83
|
+
/**
|
|
84
|
+
* A token value.
|
|
85
|
+
*
|
|
86
|
+
* A string is used as written. A two-item tuple is the light stop, then the
|
|
87
|
+
* dark stop, and becomes `light-dark()`.
|
|
88
|
+
*/
|
|
89
|
+
type ThemeTokenValue = string | readonly [string, string];
|
|
90
|
+
/** CSS custom properties for a theme. Keys may omit the `--astryx-` prefix. */
|
|
91
|
+
type ThemeTokens = Record<string, ThemeTokenValue>;
|
|
92
|
+
/** Token overrides for one inverted surface. */
|
|
93
|
+
interface ThemeSurfaceInput {
|
|
94
|
+
tokens?: ThemeTokens;
|
|
95
|
+
}
|
|
96
|
+
interface DefineThemeInput {
|
|
97
|
+
/** Theme name. Used as `data-astryx-theme`. */
|
|
98
|
+
name: string;
|
|
99
|
+
/** Semantic token overrides for this theme. */
|
|
100
|
+
tokens?: ThemeTokens;
|
|
101
|
+
/** Another theme to start from. This theme's own values win. */
|
|
102
|
+
extends?: ThemeDefinition;
|
|
103
|
+
/** Syntax colors for code in this subtree, unless a SyntaxTheme is closer. */
|
|
104
|
+
syntax?: SyntaxThemeDefinition;
|
|
105
|
+
/** Extra tokens for content on a dark surface. */
|
|
106
|
+
onDark?: ThemeSurfaceInput;
|
|
107
|
+
/** Extra tokens for content on a light surface. */
|
|
108
|
+
onLight?: ThemeSurfaceInput;
|
|
109
|
+
/**
|
|
110
|
+
* Semantic icon name to Iconify id.
|
|
111
|
+
*
|
|
112
|
+
* Entries replace the built-in map by name and merge with the theme this
|
|
113
|
+
* one extends. A name that is not listed keeps the built-in id.
|
|
114
|
+
*/
|
|
115
|
+
icons?: SemanticIconMap;
|
|
116
|
+
/**
|
|
117
|
+
* Indicator graphics, replaced by name.
|
|
118
|
+
*
|
|
119
|
+
* One entry reaches every control that draws that indicator. Entries merge
|
|
120
|
+
* with the theme this one extends.
|
|
121
|
+
*/
|
|
122
|
+
indicators?: IndicatorRegistry;
|
|
123
|
+
}
|
|
124
|
+
interface ThemeDefinition {
|
|
125
|
+
name: string;
|
|
126
|
+
/** Token values already written as CSS. */
|
|
127
|
+
tokens: Readonly<Record<string, string>>;
|
|
128
|
+
/** Extra tokens applied by MediaTheme when the surface is dark. */
|
|
129
|
+
onDark: Readonly<Record<string, string>>;
|
|
130
|
+
/** Extra tokens applied by MediaTheme when the surface is light. */
|
|
131
|
+
onLight: Readonly<Record<string, string>>;
|
|
132
|
+
syntax?: SyntaxThemeDefinition;
|
|
133
|
+
/** Semantic icon overrides. Absent when this theme does not set any. */
|
|
134
|
+
icons?: SemanticIconMap;
|
|
135
|
+
/** Indicator overrides. Absent when this theme does not set any. */
|
|
136
|
+
indicators?: IndicatorRegistry;
|
|
137
|
+
readonly __astryxTheme: true;
|
|
138
|
+
}
|
|
139
|
+
interface ThemeProps {
|
|
140
|
+
/** Theme from `defineTheme()`. */
|
|
141
|
+
theme: ThemeDefinition;
|
|
142
|
+
/**
|
|
143
|
+
* Color mode for this subtree.
|
|
144
|
+
* @default 'system'
|
|
145
|
+
*/
|
|
146
|
+
mode?: ThemeMode;
|
|
147
|
+
}
|
|
148
|
+
/** Surface luminance, `auto` to measure it, or `off` to leave the page theme. */
|
|
149
|
+
type MediaThemeMode = 'dark' | 'light' | 'auto' | 'off';
|
|
150
|
+
interface MediaThemeProps {
|
|
151
|
+
/**
|
|
152
|
+
* Which surface the children sit on.
|
|
153
|
+
* `auto` measures the parent. `off` keeps the surrounding theme.
|
|
154
|
+
*/
|
|
155
|
+
mode: MediaThemeMode;
|
|
156
|
+
/**
|
|
157
|
+
* Side used by `auto` before the surface can be measured, and when it cannot.
|
|
158
|
+
* @default 'dark'
|
|
159
|
+
*/
|
|
160
|
+
fallback?: 'dark' | 'light';
|
|
161
|
+
}
|
|
162
|
+
//#endregion
|
|
163
|
+
export { IndicatorProps as _, ThemeMode as a, IndicatorState as b, ThemeTokenValue as c, IndicatorComponent as d, IndicatorFamily as f, IndicatorPosition as g, IndicatorName as h, ThemeDefinition as i, ThemeTokens as l, IndicatorMap as m, MediaThemeMode as n, ThemeProps as o, IndicatorFamilyMap as p, MediaThemeProps as r, ThemeSurfaceInput as s, DefineThemeInput as t, CoreIndicatorName as u, IndicatorRegistry as v, IndicatorSize as y };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as useDismiss } from "./useDismiss-
|
|
1
|
+
import { t as useDismiss } from "./useDismiss-Cj8x_51F.js";
|
|
2
2
|
import { t as usePositionedLayer } from "./usePositionedLayer-C1NBOsVT.js";
|
|
3
3
|
import { computed, onMounted, ref, watch } from "vue";
|
|
4
4
|
//#region src/Typeahead/useAnchoredListbox.ts
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/composables/useDatePresentation.ts
|
|
2
|
+
/**
|
|
3
|
+
* `presentation` wins over the older native picker name.
|
|
4
|
+
* With neither set, a mouse gets the calendar popover and a coarse pointer gets the system date control.
|
|
5
|
+
*/
|
|
6
|
+
function resolveDatePresentation(presentation, nativePicker) {
|
|
7
|
+
if (presentation) return presentation;
|
|
8
|
+
if (nativePicker === "always") return "native";
|
|
9
|
+
if (nativePicker === "never") return "adaptive-bottom-sheet";
|
|
10
|
+
if (nativePicker === "touch") return "adaptive-native";
|
|
11
|
+
return "adaptive-native";
|
|
12
|
+
}
|
|
13
|
+
function resolveDateSurface(presentation, coarse) {
|
|
14
|
+
if (presentation === "popover") return "popover";
|
|
15
|
+
if (presentation === "bottom-sheet") return "sheet";
|
|
16
|
+
if (presentation === "native") return "native";
|
|
17
|
+
if (presentation === "adaptive-bottom-sheet") return coarse ? "sheet" : "popover";
|
|
18
|
+
return coarse ? "native" : "popover";
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { resolveDateSurface as n, resolveDatePresentation as t };
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { CalendarDate } from "@internationalized/date";
|
|
2
1
|
//#region src/composables/useDateRange.ts
|
|
3
2
|
const WEEKDAY_INDEX = {
|
|
4
3
|
sun: 0,
|
|
@@ -96,44 +95,4 @@ function formatDateRange(range, locale) {
|
|
|
96
95
|
return `${format(range.start)} – ${format(range.end)}`;
|
|
97
96
|
}
|
|
98
97
|
//#endregion
|
|
99
|
-
|
|
100
|
-
function toISODate(date) {
|
|
101
|
-
const month = String(date.month).padStart(2, "0");
|
|
102
|
-
const day = String(date.day).padStart(2, "0");
|
|
103
|
-
return `${date.year}-${month}-${day}`;
|
|
104
|
-
}
|
|
105
|
-
function parseISODate(value) {
|
|
106
|
-
const [year, month, day] = value.split("-").map(Number);
|
|
107
|
-
return new CalendarDate(year, month, day);
|
|
108
|
-
}
|
|
109
|
-
function buildMonthGrid(year, month, weekStartsOn) {
|
|
110
|
-
const first = new CalendarDate(year, month, 1);
|
|
111
|
-
const start = resolveWeekStart(weekStartsOn);
|
|
112
|
-
const offset = (first.toDate("UTC").getUTCDay() - start + 7) % 7;
|
|
113
|
-
let cursor = first.subtract({ days: offset });
|
|
114
|
-
const weeks = [];
|
|
115
|
-
for (let week = 0; week < 6; week += 1) {
|
|
116
|
-
const days = [];
|
|
117
|
-
for (let day = 0; day < 7; day += 1) {
|
|
118
|
-
days.push(toISODate(cursor));
|
|
119
|
-
cursor = cursor.add({ days: 1 });
|
|
120
|
-
}
|
|
121
|
-
weeks.push(days);
|
|
122
|
-
}
|
|
123
|
-
return weeks;
|
|
124
|
-
}
|
|
125
|
-
function addMonths(year, month, amount) {
|
|
126
|
-
const date = new CalendarDate(year, month, 1).add({ months: amount });
|
|
127
|
-
return {
|
|
128
|
-
year: date.year,
|
|
129
|
-
month: date.month
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
function todayISODate() {
|
|
133
|
-
const now = /* @__PURE__ */ new Date();
|
|
134
|
-
const month = String(now.getMonth() + 1).padStart(2, "0");
|
|
135
|
-
const day = String(now.getDate()).padStart(2, "0");
|
|
136
|
-
return `${now.getFullYear()}-${month}-${day}`;
|
|
137
|
-
}
|
|
138
|
-
//#endregion
|
|
139
|
-
export { todayISODate as a, formatDateRange as c, isSameRange as d, orderRange as f, toISODate as i, isDayOutsideSpan as l, spanDays as m, buildMonthGrid as n, applyRangeClick as o, resolveWeekStart as p, parseISODate as r, compareISODate as s, addMonths as t, isRangeWithinSpan as u };
|
|
98
|
+
export { isRangeWithinSpan as a, resolveWeekStart as c, isDayOutsideSpan as i, spanDays as l, compareISODate as n, isSameRange as o, formatDateRange as r, orderRange as s, applyRangeClick as t };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { onBeforeUnmount, watchEffect } from "vue";
|
|
2
|
+
//#region src/composables/useDisclosureHandle.ts
|
|
3
|
+
function publish(target, value) {
|
|
4
|
+
if (target == null) return;
|
|
5
|
+
if (typeof target === "function") target(value);
|
|
6
|
+
else target.value = value;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 把打开、关闭、切换和当前是否打开写到调用方持有的句柄上。
|
|
10
|
+
* 必须传入读取函数。句柄本身常常就是一个 ref,直接交给 Vue 的解包会拿到里面的 null。
|
|
11
|
+
* 句柄换掉时先把旧的清空,组件卸载时也清空。
|
|
12
|
+
*/
|
|
13
|
+
function useDisclosureHandle(read, handle) {
|
|
14
|
+
let previous;
|
|
15
|
+
watchEffect(() => {
|
|
16
|
+
const target = read();
|
|
17
|
+
if (previous != null && previous !== target) publish(previous, null);
|
|
18
|
+
publish(target, handle);
|
|
19
|
+
previous = target;
|
|
20
|
+
});
|
|
21
|
+
onBeforeUnmount(() => publish(read(), null));
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { useDisclosureHandle as t };
|
|
@@ -13,6 +13,10 @@ const escapeStack = [];
|
|
|
13
13
|
function useDismiss(options) {
|
|
14
14
|
const { container, trigger, isEnabled, enableEscape = { value: true }, onDismiss } = options;
|
|
15
15
|
let isAttached = false;
|
|
16
|
+
function dismissFromEscape() {
|
|
17
|
+
if (options.onEscape != null) options.onEscape();
|
|
18
|
+
else onDismiss();
|
|
19
|
+
}
|
|
16
20
|
function onClickOutside(event) {
|
|
17
21
|
if (!isEnabled.value) return;
|
|
18
22
|
const el = container.value;
|
|
@@ -25,9 +29,9 @@ function useDismiss(options) {
|
|
|
25
29
|
function onEscapeKey(event) {
|
|
26
30
|
if (!isEnabled.value || !enableEscape.value) return;
|
|
27
31
|
if (event.key === "Escape") {
|
|
28
|
-
if (escapeStack[escapeStack.length - 1] ===
|
|
32
|
+
if (escapeStack[escapeStack.length - 1] === dismissFromEscape) {
|
|
29
33
|
event.preventDefault();
|
|
30
|
-
|
|
34
|
+
dismissFromEscape();
|
|
31
35
|
}
|
|
32
36
|
}
|
|
33
37
|
}
|
|
@@ -38,14 +42,14 @@ function useDismiss(options) {
|
|
|
38
42
|
isAttached = true;
|
|
39
43
|
document.addEventListener("pointerdown", onClickOutside, true);
|
|
40
44
|
document.addEventListener("keydown", onEscapeKey, true);
|
|
41
|
-
if (enableEscape.value) escapeStack.push(
|
|
45
|
+
if (enableEscape.value) escapeStack.push(dismissFromEscape);
|
|
42
46
|
}
|
|
43
47
|
function teardown() {
|
|
44
48
|
if (typeof document === "undefined" || !isAttached) return;
|
|
45
49
|
isAttached = false;
|
|
46
50
|
document.removeEventListener("pointerdown", onClickOutside, true);
|
|
47
51
|
document.removeEventListener("keydown", onEscapeKey, true);
|
|
48
|
-
const index = escapeStack.indexOf(
|
|
52
|
+
const index = escapeStack.indexOf(dismissFromEscape);
|
|
49
53
|
if (index !== -1) escapeStack.splice(index, 1);
|
|
50
54
|
}
|
|
51
55
|
watch(isEnabled, (enabled) => {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { computed, toValue } from "vue";
|
|
2
|
+
//#region src/composables/useFieldControlState.ts
|
|
3
|
+
/**
|
|
4
|
+
* 选择器和复选列表共用的三种互斥状态。
|
|
5
|
+
* 同时标成禁用和只读时,按禁用处理。
|
|
6
|
+
*/
|
|
7
|
+
function useFieldControlState(input) {
|
|
8
|
+
const isDisabled = computed(() => toValue(input.disabled) === true);
|
|
9
|
+
const isReadOnly = computed(() => toValue(input.readOnly) === true && !isDisabled.value);
|
|
10
|
+
return {
|
|
11
|
+
isDisabled,
|
|
12
|
+
isReadOnly,
|
|
13
|
+
isLoading: computed(() => toValue(input.loading) === true),
|
|
14
|
+
canActivate: computed(() => !isDisabled.value && !isReadOnly.value)
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { useFieldControlState as t };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { onBeforeUnmount, watch } from "vue";
|
|
2
|
+
//#region src/composables/useHandleRef.ts
|
|
3
|
+
function publish(target, handle) {
|
|
4
|
+
if (target == null) return;
|
|
5
|
+
if (typeof target === "function") target(handle);
|
|
6
|
+
else target.value = handle;
|
|
7
|
+
}
|
|
8
|
+
/** Keeps an imperative handle on a ref or a callback, and clears it when the owner goes away. */
|
|
9
|
+
function useHandleRef(read, handle) {
|
|
10
|
+
watch(read, (_next, previous) => {
|
|
11
|
+
if (previous != null && previous !== read()) publish(previous, null);
|
|
12
|
+
publish(read(), handle);
|
|
13
|
+
}, { immediate: true });
|
|
14
|
+
onBeforeUnmount(() => publish(read(), null));
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { useHandleRef as t };
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { t as _sfc_main$2 } from "./Icon-bteSId7T.js";
|
|
2
|
+
import { n as themeContextKey } from "./context-Cws_tXTr.js";
|
|
3
|
+
import { n as decorativeAttrs, t as _sfc_main$3 } from "./CheckboxIndicator-D37cm2Rh.js";
|
|
4
|
+
import { Comment, Fragment, Text, computed, createBlock, createCommentVNode, createElementBlock, defineComponent, inject, mergeProps, openBlock, renderSlot, unref, useAttrs, useSlots, useTemplateRef } from "vue";
|
|
5
|
+
import "../styles/check-indicator.css";
|
|
6
|
+
import "../styles/radio-indicator.css";
|
|
7
|
+
//#region src/Indicator/isRenderable.ts
|
|
8
|
+
/**
|
|
9
|
+
* Whether a slot or vnode should replace an indicator's own mark.
|
|
10
|
+
*
|
|
11
|
+
* Null, undefined, booleans, and the empty string do not count. An element
|
|
12
|
+
* does, even when that element later renders nothing. A host writes
|
|
13
|
+
* `v-if="busy"` around a spinner, and `false` must not delete the mark.
|
|
14
|
+
*/
|
|
15
|
+
function isRenderable(value) {
|
|
16
|
+
if (value == null || typeof value === "boolean" || value === "") return false;
|
|
17
|
+
if (Array.isArray(value)) return value.some((item) => isRenderable(item));
|
|
18
|
+
if (typeof value !== "object") return true;
|
|
19
|
+
const node = value;
|
|
20
|
+
if (node.type === Comment) return false;
|
|
21
|
+
if (node.type === Text) return String(node.children ?? "").trim() !== "";
|
|
22
|
+
if (node.type === Fragment) return isRenderable(node.children);
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
//#region src/Indicator/useReplacementSlot.ts
|
|
27
|
+
/**
|
|
28
|
+
* Whether the default slot should take the place of the state mark.
|
|
29
|
+
*
|
|
30
|
+
* Called during render. The slot function runs once to inspect, and the
|
|
31
|
+
* template renders it again when the answer is yes.
|
|
32
|
+
*/
|
|
33
|
+
function useReplacementSlot() {
|
|
34
|
+
const slots = useSlots();
|
|
35
|
+
return () => isRenderable(slots.default?.());
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
//#region src/Indicator/CheckIndicator.vue
|
|
39
|
+
const _hoisted_1$1 = ["data-size", "data-disabled"];
|
|
40
|
+
const _sfc_main$1 = /*@__PURE__*/ defineComponent({
|
|
41
|
+
name: "AstryxCheckIndicator",
|
|
42
|
+
inheritAttrs: false,
|
|
43
|
+
__name: "CheckIndicator",
|
|
44
|
+
props: {
|
|
45
|
+
state: {},
|
|
46
|
+
size: { default: "md" },
|
|
47
|
+
isDisabled: { type: Boolean }
|
|
48
|
+
},
|
|
49
|
+
setup(__props, { expose: __expose }) {
|
|
50
|
+
const props = __props;
|
|
51
|
+
const attrs = useAttrs();
|
|
52
|
+
const element = useTemplateRef("mark");
|
|
53
|
+
const passed = computed(() => decorativeAttrs(attrs));
|
|
54
|
+
const replacement = useReplacementSlot();
|
|
55
|
+
__expose({ element });
|
|
56
|
+
return (_ctx, _cache) => {
|
|
57
|
+
return unref(replacement)() ? (openBlock(), createElementBlock("span", mergeProps({
|
|
58
|
+
key: 0,
|
|
59
|
+
ref: "mark"
|
|
60
|
+
}, passed.value, {
|
|
61
|
+
class: "astryx-check-indicator",
|
|
62
|
+
"aria-hidden": "true",
|
|
63
|
+
"data-size": props.size,
|
|
64
|
+
"data-disabled": __props.isDisabled || void 0
|
|
65
|
+
}), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$1)) : __props.state === "checked" ? (openBlock(), createBlock(_sfc_main$2, mergeProps({
|
|
66
|
+
key: 1,
|
|
67
|
+
ref: "mark"
|
|
68
|
+
}, passed.value, {
|
|
69
|
+
icon: "check",
|
|
70
|
+
size: "sm",
|
|
71
|
+
color: __props.isDisabled ? "disabled" : "accent",
|
|
72
|
+
"aria-hidden": "true"
|
|
73
|
+
}), null, 16, ["color"])) : createCommentVNode("v-if", true);
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
//#endregion
|
|
78
|
+
//#region src/Indicator/RadioIndicator.vue
|
|
79
|
+
const _hoisted_1 = [
|
|
80
|
+
"data-state",
|
|
81
|
+
"data-size",
|
|
82
|
+
"data-disabled"
|
|
83
|
+
];
|
|
84
|
+
const _hoisted_2 = {
|
|
85
|
+
key: 0,
|
|
86
|
+
class: "astryx-radio-indicator-dot"
|
|
87
|
+
};
|
|
88
|
+
const _sfc_main = /*@__PURE__*/ defineComponent({
|
|
89
|
+
name: "AstryxRadioIndicator",
|
|
90
|
+
inheritAttrs: false,
|
|
91
|
+
__name: "RadioIndicator",
|
|
92
|
+
props: {
|
|
93
|
+
state: {},
|
|
94
|
+
size: {},
|
|
95
|
+
isDisabled: { type: Boolean }
|
|
96
|
+
},
|
|
97
|
+
setup(__props, { expose: __expose }) {
|
|
98
|
+
const props = __props;
|
|
99
|
+
const attrs = useAttrs();
|
|
100
|
+
const element = useTemplateRef("indicator");
|
|
101
|
+
const passed = computed(() => decorativeAttrs(attrs));
|
|
102
|
+
const checked = computed(() => props.state !== "unchecked");
|
|
103
|
+
__expose({ element });
|
|
104
|
+
return (_ctx, _cache) => {
|
|
105
|
+
return openBlock(), createElementBlock("span", mergeProps(passed.value, {
|
|
106
|
+
ref: "indicator",
|
|
107
|
+
class: "astryx-radio-indicator",
|
|
108
|
+
"aria-hidden": "true",
|
|
109
|
+
"data-state": checked.value ? "checked" : "unchecked",
|
|
110
|
+
"data-size": props.size,
|
|
111
|
+
"data-disabled": __props.isDisabled || void 0
|
|
112
|
+
}), [renderSlot(_ctx.$slots, "default", {}, () => [checked.value ? (openBlock(), createElementBlock("span", _hoisted_2)) : createCommentVNode("v-if", true)])], 16, _hoisted_1);
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
//#endregion
|
|
117
|
+
//#region src/Indicator/registry.ts
|
|
118
|
+
/**
|
|
119
|
+
* The graphics this package ships.
|
|
120
|
+
*
|
|
121
|
+
* A theme's `indicators` entries replace these by name. The set is closed:
|
|
122
|
+
* a name added by augmentation is not in here.
|
|
123
|
+
*/
|
|
124
|
+
const defaultIndicators = {
|
|
125
|
+
check: _sfc_main$1,
|
|
126
|
+
checkbox: _sfc_main$3,
|
|
127
|
+
radio: _sfc_main
|
|
128
|
+
};
|
|
129
|
+
function isCoreIndicatorName(name) {
|
|
130
|
+
return name === "check" || name === "checkbox" || name === "radio";
|
|
131
|
+
}
|
|
132
|
+
function themeIndicators(theme) {
|
|
133
|
+
return theme?.indicators;
|
|
134
|
+
}
|
|
135
|
+
function getIndicator(name, theme) {
|
|
136
|
+
const override = themeIndicators(theme)?.[name];
|
|
137
|
+
if (override) return override;
|
|
138
|
+
if (isCoreIndicatorName(name)) return defaultIndicators[name];
|
|
139
|
+
}
|
|
140
|
+
//#endregion
|
|
141
|
+
//#region src/Indicator/useIndicator.ts
|
|
142
|
+
function useIndicator(name) {
|
|
143
|
+
const context = inject(themeContextKey, null);
|
|
144
|
+
return computed(() => getIndicator(name, context?.value.theme));
|
|
145
|
+
}
|
|
146
|
+
//#endregion
|
|
147
|
+
export { _sfc_main as a, isCoreIndicatorName as i, defaultIndicators as n, _sfc_main$1 as o, getIndicator as r, isRenderable as s, useIndicator as t };
|