@nubisco/ui 4.1.3 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AiLabel-VbZiFHAZ.js → AiLabel-Ci7eROcw.js} +1 -1
- package/dist/{AiLabel-DZ9GkGqL.cjs → AiLabel-DtM5ZCQC.cjs} +1 -1
- package/dist/{Banner-7XsX8ibI.js → Banner-C5Erb75B.js} +1 -1
- package/dist/{Banner-DI5fA8Ow.cjs → Banner-JubX-4yR.cjs} +1 -1
- package/dist/{BlueprintControls-CJAKrQ6U.js → BlueprintControls-BkwhsHI8.js} +1 -1
- package/dist/{BlueprintControls-aF11uokn.cjs → BlueprintControls-CdvNvRkW.cjs} +1 -1
- package/dist/{BlueprintMinimap-C-gCkMIW.cjs → BlueprintMinimap-BIBsnBFs.cjs} +1 -1
- package/dist/{BlueprintMinimap-C-65UzhM.js → BlueprintMinimap-QAw6aiCc.js} +1 -1
- package/dist/{BottomPanel-B-dhgMWB.js → BottomPanel-BoBCdANz.js} +1 -1
- package/dist/{BottomPanel-CmVH0Hsf.cjs → BottomPanel-dbllmH2v.cjs} +1 -1
- package/dist/Button-Dwv0rx46.cjs +1 -0
- package/dist/{Button-Cegx6vaT.js → Button-Q8MBLMvG.js} +12 -4
- package/dist/{Card-Cs-7jXxG.cjs → Card-Cn5OS4q-.cjs} +1 -1
- package/dist/{Card-TjV_N8RU.js → Card-eM6DEphF.js} +1 -1
- package/dist/{Checkbox-BJrnykX9.js → Checkbox-DG82KK8V.js} +1 -1
- package/dist/{Checkbox-D9qW3gph.cjs → Checkbox-vFN3fLyr.cjs} +1 -1
- package/dist/{CheckboxGroup-CUSPscyy.js → CheckboxGroup-5pmdu9fe.js} +1 -1
- package/dist/{CheckboxGroup-mWcKUeq9.cjs → CheckboxGroup-Cyj2NUtI.cjs} +1 -1
- package/dist/{ColorStrip-CR1JDzwX.js → ColorStrip-BBTJU1Ox.js} +47 -45
- package/dist/ColorStrip-D3nbTyfs.cjs +1 -0
- package/dist/{Confirm-pgn2HajX.js → Confirm-C-HRTF0s.js} +23 -52
- package/dist/Confirm-w3Ig0L5j.cjs +1 -0
- package/dist/{DataTable-c0ltF6wT.js → DataTable-BVxSUB-h.js} +3 -3
- package/dist/{DataTable-BbiDmA1X.cjs → DataTable-Cnyh04sD.cjs} +1 -1
- package/dist/{DatePicker-YJ8-ViVK.js → DatePicker-BimOzKti.js} +1 -1
- package/dist/{DatePicker-C8_qR25v.cjs → DatePicker-CMPgr4Hp.cjs} +1 -1
- package/dist/{EmptyState-DVg8l-bl.js → EmptyState-CwMG-NeI.js} +1 -1
- package/dist/{EmptyState-henL7JH6.cjs → EmptyState-Cz91HAKF.cjs} +1 -1
- package/dist/{FileUploader-Lzy4bFn7.cjs → FileUploader-BJdRC-Kp.cjs} +1 -1
- package/dist/{FileUploader-BLwR6H3f.js → FileUploader-BO2cDUwP.js} +2 -2
- package/dist/ImageCropper-D7mr-xRE.cjs +1 -0
- package/dist/{ImageCropper-BT9lfFrs.js → ImageCropper-DEaGU0cZ.js} +74 -53
- package/dist/{InfoHint-DesESwdO.cjs → InfoHint-BNpqLVSX.cjs} +1 -1
- package/dist/{InfoHint-JwhhBFZP.js → InfoHint-C663u_NL.js} +1 -1
- package/dist/{InlineEdit-CZEt1vhH.cjs → InlineEdit-D95I45Vt.cjs} +1 -1
- package/dist/{InlineEdit-DNMF_40m.js → InlineEdit-DrhJ0AX2.js} +1 -1
- package/dist/{Message-Daj6hLC4.cjs → Message-Ax7rnAQl.cjs} +1 -1
- package/dist/{Message-BuG5t7bu.js → Message-DqUW3GHc.js} +1 -1
- package/dist/Modal-B1CQyPNo.js +206 -0
- package/dist/Modal-DvukGfHg.cjs +1 -0
- package/dist/{NotificationCenter-DL_Tshyb.js → NotificationCenter-Duu3XZC3.js} +3 -3
- package/dist/{NotificationCenter-D51ty3Lq.cjs → NotificationCenter-oOzClQI-.cjs} +1 -1
- package/dist/{NumberInput-Vc2wzK62.cjs → NumberInput-DKZsdWLv.cjs} +1 -1
- package/dist/{NumberInput-6R8FkJc-.js → NumberInput-_ff3Xi2r.js} +2 -2
- package/dist/{Pagination-B6a62qvI.js → Pagination-6bF88x_p.js} +3 -3
- package/dist/{Pagination-CkBe9Naz.cjs → Pagination-EipK6BGe.cjs} +1 -1
- package/dist/{Panel-BVtGI7YH.js → Panel-D3s_MKfd.js} +1 -1
- package/dist/{Panel-DQfmVtie.cjs → Panel-qDfyu_0v.cjs} +1 -1
- package/dist/{ProgressBar-fAaKT9lD.cjs → ProgressBar-CbqsSdZZ.cjs} +1 -1
- package/dist/{ProgressBar-DjejtCKA.js → ProgressBar-aF2zBoRA.js} +2 -2
- package/dist/{Radio-CQveGtXr.js → Radio-BnI7bi9Y.js} +2 -2
- package/dist/{Radio-DSvkUCxV.cjs → Radio-BqjtCaST.cjs} +1 -1
- package/dist/{ReorderList-Bai4yaIG.cjs → ReorderList-DLQ3rVnX.cjs} +1 -1
- package/dist/{ReorderList-Be-qicSf.js → ReorderList-DpytAupm.js} +1 -1
- package/dist/{Select-swFFQIMN.js → Select-B5t5QtVe.js} +1 -1
- package/dist/{Select-ClCyOqQI.cjs → Select-dAYn2iZO.cjs} +1 -1
- package/dist/{Shell-B8YmApR6.cjs → Shell-9lzopP-w.cjs} +1 -1
- package/dist/{Shell-Dr7LHIqk.js → Shell-B3jhTiNP.js} +99 -96
- package/dist/{ShellPanel-I0ZMGQ4K.js → ShellPanel-B3vZcQhX.js} +1 -1
- package/dist/{ShellPanel-CnN9orWH.cjs → ShellPanel-ChujN0eX.cjs} +1 -1
- package/dist/{SidebarLink-y2If8dtl.js → SidebarLink-B_CGHs0b.js} +1 -1
- package/dist/{SidebarLink-CngTvuB6.cjs → SidebarLink-CZrDLC8g.cjs} +1 -1
- package/dist/{SidebarMenuItem-DoyuIs3w.cjs → SidebarMenuItem-Dc6oh2Nc.cjs} +1 -1
- package/dist/{SidebarMenuItem-DBINoxeA.js → SidebarMenuItem-Dpqr9e0A.js} +1 -1
- package/dist/{Skeleton-D8CHd_4p.cjs → Skeleton-DP9iM6Ku.cjs} +1 -1
- package/dist/{Skeleton-CC7LVdxd.js → Skeleton-sox6qUDk.js} +1 -1
- package/dist/Slider-BNiQaaVa.cjs +1 -0
- package/dist/{Slider-lOhGG7UX.js → Slider-C0761rBk.js} +47 -33
- package/dist/{StepperStep-w1SSX7t7.cjs → StepperStep-B9JEE6WJ.cjs} +1 -1
- package/dist/{StepperStep-DNXUj71b.js → StepperStep-DFeOJ1ju.js} +1 -1
- package/dist/{Tabs-W_4iyGVx.js → Tabs-CQP9zwDw.js} +1 -1
- package/dist/{Tabs-Clg7lzy5.cjs → Tabs-Dp27EDrK.cjs} +1 -1
- package/dist/{TextInput-CGD_wFwo.cjs → TextInput-D4jBlYm9.cjs} +2 -2
- package/dist/{TextInput-CxC2HVj6.js → TextInput-DNrd12uS.js} +2 -2
- package/dist/{Toast-DueO27yl.cjs → Toast-BBsrCQK8.cjs} +1 -1
- package/dist/{Toast-QXobTGZM.js → Toast-cisfK5Zd.js} +1 -1
- package/dist/{Toaster-DcA6PJPt.js → Toaster-C1Uyr6O7.js} +1 -1
- package/dist/{Toaster-DY8o_iiy.cjs → Toaster-Dz_o--LF.cjs} +1 -1
- package/dist/{TreeNode-DS1XJGty.cjs → TreeNode-DB7ipWCg.cjs} +1 -1
- package/dist/{TreeNode-BI-Azvhe.js → TreeNode-a0MHLI27.js} +1 -1
- package/dist/{Walkthrough-DHtLDsOk.cjs → Walkthrough-YD3YYxxM.cjs} +1 -1
- package/dist/{Walkthrough-l7HOZths.js → Walkthrough-qaQ1rved.js} +2 -2
- package/dist/all.cjs +1 -1
- package/dist/all.mjs +137 -135
- package/dist/component-styles.json +1 -1
- package/dist/components/AiLabel.cjs +1 -1
- package/dist/components/AiLabel.mjs +1 -1
- package/dist/components/AiLabel.vue.d.ts.map +1 -1
- package/dist/components/Banner.cjs +1 -1
- package/dist/components/Banner.mjs +1 -1
- package/dist/components/Banner.vue.d.ts.map +1 -1
- package/dist/components/BlueprintControls.cjs +1 -1
- package/dist/components/BlueprintControls.mjs +1 -1
- package/dist/components/BlueprintMinimap.cjs +1 -1
- package/dist/components/BlueprintMinimap.mjs +1 -1
- package/dist/components/BlueprintMinimap.vue.d.ts.map +1 -1
- package/dist/components/Board.vue.d.ts.map +1 -1
- package/dist/components/BottomPanel.cjs +1 -1
- package/dist/components/BottomPanel.mjs +1 -1
- package/dist/components/BottomPanel.vue.d.ts.map +1 -1
- package/dist/components/Button.cjs +1 -1
- package/dist/components/Button.d.ts +25 -1
- package/dist/components/Button.mjs +1 -1
- package/dist/components/Button.vue.d.ts +1 -1
- package/dist/components/Button.vue.d.ts.map +1 -1
- package/dist/components/Calendar.vue.d.ts.map +1 -1
- package/dist/components/Card.cjs +1 -1
- package/dist/components/Card.mjs +1 -1
- package/dist/components/Card.vue.d.ts.map +1 -1
- package/dist/components/Checkbox.cjs +1 -1
- package/dist/components/Checkbox.mjs +1 -1
- package/dist/components/Checkbox.vue.d.ts.map +1 -1
- package/dist/components/CheckboxGroup.cjs +1 -1
- package/dist/components/CheckboxGroup.mjs +1 -1
- package/dist/components/ColorStrip.cjs +1 -1
- package/dist/components/ColorStrip.mjs +1 -1
- package/dist/components/ColorStrip.vue.d.ts.map +1 -1
- package/dist/components/CommandPalette.vue.d.ts.map +1 -1
- package/dist/components/Confirm.cjs +1 -1
- package/dist/components/Confirm.mjs +1 -1
- package/dist/components/Confirm.vue.d.ts +1 -1
- package/dist/components/Confirm.vue.d.ts.map +1 -1
- package/dist/components/DataTable.cjs +1 -1
- package/dist/components/DataTable.mjs +1 -1
- package/dist/components/DataTable.vue.d.ts.map +1 -1
- package/dist/components/DatePicker.cjs +1 -1
- package/dist/components/DatePicker.mjs +1 -1
- package/dist/components/DatePicker.vue.d.ts.map +1 -1
- package/dist/components/EmptyState.cjs +1 -1
- package/dist/components/EmptyState.mjs +1 -1
- package/dist/components/EmptyState.vue.d.ts.map +1 -1
- package/dist/components/FileUploader.cjs +1 -1
- package/dist/components/FileUploader.mjs +1 -1
- package/dist/components/FileUploader.vue.d.ts.map +1 -1
- package/dist/components/ImageCropper.cjs +1 -1
- package/dist/components/ImageCropper.mjs +1 -1
- package/dist/components/ImageCropper.vue.d.ts.map +1 -1
- package/dist/components/InfoHint.cjs +1 -1
- package/dist/components/InfoHint.mjs +1 -1
- package/dist/components/InfoHint.vue.d.ts.map +1 -1
- package/dist/components/InlineEdit.cjs +1 -1
- package/dist/components/InlineEdit.mjs +1 -1
- package/dist/components/InlineEdit.vue.d.ts.map +1 -1
- package/dist/components/Menu.vue.d.ts.map +1 -1
- package/dist/components/MenuItem.vue.d.ts.map +1 -1
- package/dist/components/Message.cjs +1 -1
- package/dist/components/Message.mjs +1 -1
- package/dist/components/Message.vue.d.ts.map +1 -1
- package/dist/components/Modal.cjs +1 -1
- package/dist/components/Modal.d.ts +39 -0
- package/dist/components/Modal.mjs +1 -1
- package/dist/components/Modal.vue.d.ts +3 -0
- package/dist/components/Modal.vue.d.ts.map +1 -1
- package/dist/components/NotificationCenter.cjs +1 -1
- package/dist/components/NotificationCenter.mjs +1 -1
- package/dist/components/NotificationCenter.vue.d.ts.map +1 -1
- package/dist/components/NotificationCenterItem.vue.d.ts.map +1 -1
- package/dist/components/NumberInput.cjs +1 -1
- package/dist/components/NumberInput.mjs +1 -1
- package/dist/components/NumberInput.vue.d.ts.map +1 -1
- package/dist/components/Pagination.cjs +1 -1
- package/dist/components/Pagination.mjs +1 -1
- package/dist/components/Pagination.vue.d.ts.map +1 -1
- package/dist/components/Panel.cjs +1 -1
- package/dist/components/Panel.mjs +1 -1
- package/dist/components/Panel.vue.d.ts.map +1 -1
- package/dist/components/ProgressBar.cjs +1 -1
- package/dist/components/ProgressBar.mjs +1 -1
- package/dist/components/ProgressBar.vue.d.ts.map +1 -1
- package/dist/components/Radio.cjs +1 -1
- package/dist/components/Radio.mjs +1 -1
- package/dist/components/Radio.vue.d.ts.map +1 -1
- package/dist/components/ReorderList.cjs +1 -1
- package/dist/components/ReorderList.mjs +1 -1
- package/dist/components/ReorderList.vue.d.ts.map +1 -1
- package/dist/components/Select.cjs +1 -1
- package/dist/components/Select.mjs +1 -1
- package/dist/components/Select.vue.d.ts.map +1 -1
- package/dist/components/Shell.cjs +1 -1
- package/dist/components/Shell.mjs +1 -1
- package/dist/components/Shell.vue.d.ts.map +1 -1
- package/dist/components/ShellPanel.cjs +1 -1
- package/dist/components/ShellPanel.mjs +1 -1
- package/dist/components/ShellPanel.vue.d.ts.map +1 -1
- package/dist/components/SidebarLink.cjs +1 -1
- package/dist/components/SidebarLink.mjs +1 -1
- package/dist/components/SidebarLink.vue.d.ts.map +1 -1
- package/dist/components/SidebarMenuItem.cjs +1 -1
- package/dist/components/SidebarMenuItem.mjs +1 -1
- package/dist/components/SidebarMenuItem.vue.d.ts.map +1 -1
- package/dist/components/Skeleton.cjs +1 -1
- package/dist/components/Skeleton.mjs +1 -1
- package/dist/components/Skeleton.vue.d.ts.map +1 -1
- package/dist/components/Slider.cjs +1 -1
- package/dist/components/Slider.d.ts +8 -0
- package/dist/components/Slider.mjs +1 -1
- package/dist/components/Slider.vue.d.ts +1 -0
- package/dist/components/Slider.vue.d.ts.map +1 -1
- package/dist/components/StepperStep.cjs +1 -1
- package/dist/components/StepperStep.mjs +1 -1
- package/dist/components/StepperStep.vue.d.ts.map +1 -1
- package/dist/components/Tabs.cjs +1 -1
- package/dist/components/Tabs.mjs +1 -1
- package/dist/components/Tabs.vue.d.ts.map +1 -1
- package/dist/components/TextInput.cjs +1 -1
- package/dist/components/TextInput.mjs +1 -1
- package/dist/components/TextInput.vue.d.ts.map +1 -1
- package/dist/components/Toast.cjs +1 -1
- package/dist/components/Toast.mjs +1 -1
- package/dist/components/Toast.vue.d.ts.map +1 -1
- package/dist/components/Toaster.cjs +1 -1
- package/dist/components/Toaster.mjs +1 -1
- package/dist/components/TreeNode.cjs +1 -1
- package/dist/components/TreeNode.mjs +1 -1
- package/dist/components/TreeNode.vue.d.ts.map +1 -1
- package/dist/components/UserMenu.vue.d.ts.map +1 -1
- package/dist/components/Walkthrough.cjs +1 -1
- package/dist/components/Walkthrough.mjs +1 -1
- package/dist/components/Walkthrough.vue.d.ts.map +1 -1
- package/dist/composables/useAppearance.composable.cjs +1 -0
- package/dist/composables/useAppearance.composable.d.ts +131 -0
- package/dist/composables/useAppearance.composable.d.ts.map +1 -0
- package/dist/composables/useAppearance.composable.mjs +65 -0
- package/dist/composables/useConfirm.composable.cjs +1 -1
- package/dist/composables/useConfirm.composable.mjs +2 -1
- package/dist/composables/useFocusTrap.composable.cjs +1 -0
- package/dist/composables/useFocusTrap.composable.d.ts +91 -0
- package/dist/composables/useFocusTrap.composable.d.ts.map +1 -0
- package/dist/composables/useFocusTrap.composable.mjs +98 -0
- package/dist/composables/useNamedTheme.composable.cjs +1 -0
- package/dist/composables/useNamedTheme.composable.d.ts +98 -0
- package/dist/composables/useNamedTheme.composable.d.ts.map +1 -0
- package/dist/composables/useNamedTheme.composable.mjs +68 -0
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +44 -42
- package/dist/main.d.ts +4 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/plugins/vite/index.d.ts.map +1 -1
- package/dist/plugins/vite/index.js +59 -0
- package/dist/styles/AiLabel.css +1 -1
- package/dist/styles/Banner.css +1 -1
- package/dist/styles/BlueprintMinimap.css +1 -1
- package/dist/styles/Board.css +1 -1
- package/dist/styles/BottomPanel.css +1 -1
- package/dist/styles/Button.css +1 -1
- package/dist/styles/Calendar.css +1 -1
- package/dist/styles/Card.css +1 -1
- package/dist/styles/Checkbox.css +1 -1
- package/dist/styles/ColorStrip.css +1 -1
- package/dist/styles/CommandPalette.css +1 -1
- package/dist/styles/Confirm.css +1 -1
- package/dist/styles/DataTable.css +1 -1
- package/dist/styles/DatePicker.css +1 -1
- package/dist/styles/EmptyState.css +1 -1
- package/dist/styles/FileUploader.css +1 -1
- package/dist/styles/ImageCropper.css +1 -1
- package/dist/styles/InfoHint.css +1 -1
- package/dist/styles/InlineEdit.css +1 -1
- package/dist/styles/Menu.css +1 -1
- package/dist/styles/MenuItem.css +1 -1
- package/dist/styles/Message.css +1 -1
- package/dist/styles/Modal.css +1 -1
- package/dist/styles/NotificationCenter.css +1 -1
- package/dist/styles/NotificationCenterItem.css +1 -1
- package/dist/styles/NumberInput.css +1 -1
- package/dist/styles/Pagination.css +1 -1
- package/dist/styles/Panel.css +1 -1
- package/dist/styles/ProgressBar.css +1 -1
- package/dist/styles/Radio.css +1 -1
- package/dist/styles/ReorderList.css +1 -1
- package/dist/styles/Select.css +1 -1
- package/dist/styles/Shell.css +1 -1
- package/dist/styles/ShellPanel.css +1 -1
- package/dist/styles/SidebarLink.css +1 -1
- package/dist/styles/SidebarMenuItem.css +1 -1
- package/dist/styles/Skeleton.css +1 -1
- package/dist/styles/Slider.css +1 -1
- package/dist/styles/StepperStep.css +1 -1
- package/dist/styles/Tabs.css +1 -1
- package/dist/styles/TextInput.css +1 -1
- package/dist/styles/Toast.css +1 -1
- package/dist/styles/TreeNode.css +1 -1
- package/dist/styles/UserMenu.css +1 -1
- package/dist/styles/Walkthrough.css +1 -1
- package/dist/ui.css +45 -45
- package/package.json +7 -4
- package/src/plugins/vite/index.ts +62 -0
- package/src/styles/_appearance.scss +144 -0
- package/src/styles/_theme-api.scss +193 -0
- package/src/styles/_theme.scss +91 -5
- package/src/styles/index.scss +8 -0
- package/src/styles/logic/_radius.scss +146 -0
- package/src/styles/logic/index.scss +1 -0
- package/src/styles/presets/_classic-fields.scss +55 -0
- package/dist/Button-Dqtcr4i0.cjs +0 -1
- package/dist/ColorStrip-CAcR1O_R.cjs +0 -1
- package/dist/Confirm-CW160zEF.cjs +0 -1
- package/dist/ImageCropper-B0J5wwza.cjs +0 -1
- package/dist/Modal-8lgeNWj8.cjs +0 -1
- package/dist/Modal-iN94HtKE.js +0 -156
- package/dist/Slider-CxrK7cAU.cjs +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../TextInput-
|
|
1
|
+
import { t as e } from "../TextInput-DNrd12uS.js";
|
|
2
2
|
export { e as NbTextInput, e as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextInput.vue.d.ts","sourceRoot":"","sources":["../../src/components/TextInput.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TextInput.vue.d.ts","sourceRoot":"","sources":["../../src/components/TextInput.vue"],"names":[],"mappings":"AA4mBA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAO9D,MAAM,WAAW,eAAgB,SAAQ,uBAAuB;IAC9D,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CACrC;AAED,KAAK,WAAW,GAAG,eAAe,CAAC;AAyFnC,KAAK,gBAAgB,GAAG;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AA2BF,KAAK,iBAAiB,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAgYxD,QAAA,IAAI,OAAO,IAAU,EAAE,QAAQ,IAAW,EAAE,QAAQ,IAAW,EAAE,QAAQ,IAAW,EAAE,QAAQ,IAAW,EAAE,QAAQ,IAAY,CAAE;AACjI,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,GAC1C;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,GAC7C;IAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,GAC9C;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,GAC7C;IAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,GAC9C;IAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,CAAC;AAQ9C,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;UAzhBP,MAAM;SACP,MAAM,GAAG,MAAM;UAOd,MAAM;;;;SANP,MAAM,GAAG,MAAM;;;UACd,MAAM,GAAG,MAAM;eAcV,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM;eAbxB,MAAM;eAEN,OAAO;6EAwhBnB,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../Toast-
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../Toast-BBsrCQK8.cjs`);exports.NbToast=e.t,exports.default=e.t;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../Toast-
|
|
1
|
+
import { t as e } from "../Toast-cisfK5Zd.js";
|
|
2
2
|
export { e as NbToast, e as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.vue.d.ts","sourceRoot":"","sources":["../../src/components/Toast.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Toast.vue.d.ts","sourceRoot":"","sources":["../../src/components/Toast.vue"],"names":[],"mappings":"AAmeA,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;AAEpE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAED,KAAK,WAAW,GAAG;IACf,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,SAAS,CAAA;IACf;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAA;IACzC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAC;AA8PJ,QAAA,MAAM,YAAY;;;;;;;WApSN,MAAM;UAiBP,OAAO,GAAG,QAAQ,GAAG,MAAM;aAlBxB,aAAa;gBA4BV,MAAM;cAlBR,MAAM;SACX,SAAS;cASJ,WAAW,GAAG,QAAQ,GAAG,KAAK;iBAM3B,MAAM;aAQV,OAAO;YAER,OAAO;WAER,MAAM;6EAmQhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../Toaster-
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../Toaster-Dz_o--LF.cjs`);exports.NbToaster=e.t,exports.default=e.t;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../Toaster-
|
|
1
|
+
import { t as e } from "../Toaster-C1Uyr6O7.js";
|
|
2
2
|
export { e as NbToaster, e as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../TreeNode-
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../TreeNode-DB7ipWCg.cjs`);exports.NbTreeNode=e.t,exports.default=e.t;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../TreeNode-
|
|
1
|
+
import { t as e } from "../TreeNode-a0MHLI27.js";
|
|
2
2
|
export { e as NbTreeNode, e as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeNode.vue.d.ts","sourceRoot":"","sources":["../../src/components/TreeNode.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TreeNode.vue.d.ts","sourceRoot":"","sources":["../../src/components/TreeNode.vue"],"names":[],"mappings":"AAgdA,OAAO,KAAK,EAAE,cAAc,EAAmC,MAAM,UAAU,CAAA;AAsU/E,QAAA,IAAI,QAAQ,IAAW,EAAE,QAAQ,IAAW,EAAE,QAAQ,IAAY,CAAE;AACpE,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,GAC3C;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,GAC7C;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,CAAC;AAKhD,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;6EAId,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserMenu.vue.d.ts","sourceRoot":"","sources":["../../src/components/UserMenu.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UserMenu.vue.d.ts","sourceRoot":"","sources":["../../src/components/UserMenu.vue"],"names":[],"mappings":"AAkgBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAyHpE,iBAAS,MAAM,SASd;AAED,iBAAS,KAAK,SAIb;AAkZD,QAAA,IAAI,OAAO;;;CAAU,EAAE,QAAQ;;CAAW,EAAE,QAAQ,IAAY,CAAE;AAClE,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,GAC5C;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,GAC7C;IAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,CAAC;AAQ9C,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAKd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../Walkthrough-
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../Walkthrough-YD3YYxxM.cjs`);exports.NbWalkthrough=e.t,exports.default=e.t;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../Walkthrough-
|
|
1
|
+
import { t as e } from "../Walkthrough-qaQ1rved.js";
|
|
2
2
|
export { e as NbWalkthrough, e as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Walkthrough.vue.d.ts","sourceRoot":"","sources":["../../src/components/Walkthrough.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Walkthrough.vue.d.ts","sourceRoot":"","sources":["../../src/components/Walkthrough.vue"],"names":[],"mappings":"AA2rBA,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,iBAAiB,CAAA;AAiRxB,iBAAS,MAAM,SAOd;AAED,iBAAS,MAAM,SAGd;AAED,iBAAe,YAAY,kBAI1B;AAED,iBAAe,MAAM,kBAKpB;AAkWD,QAAA,IAAI,OAAO;;;;CAAU,EAAE,OAAO;;;;CAAU,EAAE,QAAQ;;;;;;;CAAY,CAAE;AAChE,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,GAC3C;IAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,GACzC;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,CAAC;AAOhD,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAKd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../chunk-D-qHiVGv.cjs`);let e=require(`vue`);var t={storageKey:`nubisco.appearance`,defaultAppearance:`square`,attribute:`data-nb-appearance`,persist:!0},n={...t},r=!1,i=(0,e.ref)(t.defaultAppearance);function a(e){return e===`square`||e===`rounded`}function o(){if(!n.persist)return null;try{if(typeof localStorage>`u`)return null;let e=localStorage.getItem(n.storageKey);return a(e)?e:null}catch{return null}}function s(e){if(n.persist)try{if(typeof localStorage>`u`)return;localStorage.setItem(n.storageKey,e)}catch{}}function c(){typeof document>`u`||document.documentElement.setAttribute(n.attribute,i.value)}var l=null;function u(){i.value=o()??n.defaultAppearance,c(),l?.(),l=(0,e.watch)(i,e=>{s(e),c()}),r=!0}function d(e={}){n={...n,...e},u()}function f(){return r||u(),{appearance:(0,e.readonly)(i),isRounded:(0,e.computed)(()=>i.value===`rounded`),setAppearance:e=>{i.value=e},toggle:()=>{i.value=i.value===`rounded`?`square`:`rounded`}}}function p(e=`square`){return{attribute:n.attribute,value:e}}function m(){l?.(),l=null,n={...t},i.value=t.defaultAppearance,r=!1}exports.appearanceAttribute=p,exports.configureAppearance=d,exports.resetAppearance=m,exports.useAppearance=f;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Square or rounded, for the whole library, independently of light and dark.
|
|
3
|
+
*
|
|
4
|
+
* This is a sibling of `useTheme()` and deliberately looks like it: one global
|
|
5
|
+
* piece of state, a `configure*` function for boot-time wiring, a controller
|
|
6
|
+
* for components, an attribute on `<html>` so that teleported overlays inherit
|
|
7
|
+
* it, and storage access that cannot throw the application down. Two knobs
|
|
8
|
+
* that behave the same way are easier to hold than two knobs that each invent
|
|
9
|
+
* their own conventions.
|
|
10
|
+
*
|
|
11
|
+
* The two settings are genuinely independent. Changing appearance does not
|
|
12
|
+
* touch the colour-mode preference and does not repaint the theme; changing
|
|
13
|
+
* the theme does not reset appearance. They are stored under different keys
|
|
14
|
+
* and written to different attributes, so neither can clobber the other.
|
|
15
|
+
*
|
|
16
|
+
* ## Square is the default, and it is the compatible one
|
|
17
|
+
*
|
|
18
|
+
* The library's geometry is square today: panels, menus, modals, buttons and
|
|
19
|
+
* fields all render at 0. `square` reproduces that exactly, so an application
|
|
20
|
+
* that upgrades and calls nothing gets the pixels it had before. `rounded` is
|
|
21
|
+
* an explicit opt-in.
|
|
22
|
+
*
|
|
23
|
+
* Rounding is not a modernisation and is not a default in waiting. The square
|
|
24
|
+
* treatment is part of what makes this library recognisable, and it stays
|
|
25
|
+
* supported and unchanged for anyone who wants it.
|
|
26
|
+
*/
|
|
27
|
+
import { type ComputedRef, type Ref } from 'vue';
|
|
28
|
+
/** The two appearances. There is no `system` here: the OS has no opinion. */
|
|
29
|
+
export type TAppearance = 'square' | 'rounded';
|
|
30
|
+
export interface IAppearanceOptions {
|
|
31
|
+
/**
|
|
32
|
+
* localStorage key the preference is persisted under. Namespace it per
|
|
33
|
+
* application (`'analytics.appearance'`), so two Nubisco products served
|
|
34
|
+
* from the same origin do not fight over one value.
|
|
35
|
+
*/
|
|
36
|
+
storageKey?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Appearance to use when nothing is stored yet. Defaults to `square`, which
|
|
39
|
+
* is the geometry every existing application already has.
|
|
40
|
+
*/
|
|
41
|
+
defaultAppearance?: TAppearance;
|
|
42
|
+
/**
|
|
43
|
+
* Attribute placed on `<html>`. Matches the selector the library's rounded
|
|
44
|
+
* scale is emitted under; override only if an application has its own
|
|
45
|
+
* stylesheet keyed on something else.
|
|
46
|
+
*/
|
|
47
|
+
attribute?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Whether the preference is read from and written to storage at all.
|
|
50
|
+
*
|
|
51
|
+
* An application that drives appearance from its own settings backend wants
|
|
52
|
+
* this off: with persistence on, a stored value from a previous visit wins
|
|
53
|
+
* over the `defaultAppearance` the application just passed, which looks like
|
|
54
|
+
* the library overriding the application. Off, `configureAppearance()` is
|
|
55
|
+
* the only thing that decides.
|
|
56
|
+
*/
|
|
57
|
+
persist?: boolean;
|
|
58
|
+
}
|
|
59
|
+
export interface IAppearanceController {
|
|
60
|
+
/** The current appearance. */
|
|
61
|
+
appearance: Readonly<Ref<TAppearance>>;
|
|
62
|
+
/** True while rounded, for a control that marks it. */
|
|
63
|
+
isRounded: ComputedRef<boolean>;
|
|
64
|
+
/** Pin an appearance. */
|
|
65
|
+
setAppearance: (value: TAppearance) => void;
|
|
66
|
+
/** Flip to the other one, for a single-button toggle. */
|
|
67
|
+
toggle: () => void;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Chooses the appearance before the first `useAppearance()`.
|
|
71
|
+
*
|
|
72
|
+
* Call it once, at application start, next to the other boot-time wiring:
|
|
73
|
+
*
|
|
74
|
+
* ```ts
|
|
75
|
+
* import { configureAppearance } from '@nubisco/ui'
|
|
76
|
+
*
|
|
77
|
+
* configureAppearance({ defaultAppearance: 'rounded' })
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* With `persist` left on, a value the user chose in a previous visit wins over
|
|
81
|
+
* `defaultAppearance`; that is the point of persisting it. An application that
|
|
82
|
+
* owns the setting itself should pass `persist: false` and call
|
|
83
|
+
* `setAppearance()` from its own state, so nothing in storage can override it.
|
|
84
|
+
*
|
|
85
|
+
* Calling it later re-reads storage and repaints, which is what a test or an
|
|
86
|
+
* application switching identity mid-session wants. It is not a per-component
|
|
87
|
+
* knob: appearance is one global piece of state, exactly like the document it
|
|
88
|
+
* paints.
|
|
89
|
+
*/
|
|
90
|
+
export declare function configureAppearance(next?: IAppearanceOptions): void;
|
|
91
|
+
/**
|
|
92
|
+
* Square or rounded geometry, at runtime, without a rebuild or a reload.
|
|
93
|
+
*
|
|
94
|
+
* ```vue
|
|
95
|
+
* const { appearance, isRounded, setAppearance, toggle } = useAppearance()
|
|
96
|
+
* ```
|
|
97
|
+
*
|
|
98
|
+
* The library ships both radius scales and switches between them on a single
|
|
99
|
+
* attribute, so all this owns is the decision about which one is present and
|
|
100
|
+
* where the preference is stored. Switching changes geometry only: every
|
|
101
|
+
* height, padding and font size is identical in both, so nothing reflows.
|
|
102
|
+
*/
|
|
103
|
+
export declare function useAppearance(): IAppearanceController;
|
|
104
|
+
/**
|
|
105
|
+
* The attribute and value the server should render on `<html>` so that the
|
|
106
|
+
* first paint already has the right geometry.
|
|
107
|
+
*
|
|
108
|
+
* Appearance is a client preference living in `localStorage`, which a server
|
|
109
|
+
* cannot read, so server rendering can only emit the application's default.
|
|
110
|
+
* Emitting it is still worth doing: it makes the markup match what
|
|
111
|
+
* `configureAppearance()` will apply on hydration, so there is no attribute
|
|
112
|
+
* change on the first frame for the square default, and for an application
|
|
113
|
+
* whose default is rounded it removes the square-to-rounded flash entirely.
|
|
114
|
+
*
|
|
115
|
+
* ```ts
|
|
116
|
+
* const { attribute, value } = appearanceAttribute('rounded')
|
|
117
|
+
* // -> <html data-nb-appearance="rounded">
|
|
118
|
+
* ```
|
|
119
|
+
*
|
|
120
|
+
* A user whose stored preference differs from the server default still gets
|
|
121
|
+
* one correction on hydration. That is the same trade the theme class makes,
|
|
122
|
+
* and the same fix applies: an inline script before first paint, reading the
|
|
123
|
+
* same storage key.
|
|
124
|
+
*/
|
|
125
|
+
export declare function appearanceAttribute(value?: TAppearance): {
|
|
126
|
+
attribute: string;
|
|
127
|
+
value: TAppearance;
|
|
128
|
+
};
|
|
129
|
+
/** Test helper: forgets configuration and state. */
|
|
130
|
+
export declare function resetAppearance(): void;
|
|
131
|
+
//# sourceMappingURL=useAppearance.composable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAppearance.composable.d.ts","sourceRoot":"","sources":["../../src/composables/useAppearance.composable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAkC,KAAK,WAAW,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAA;AAEhF,6EAA6E;AAC7E,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAA;AAE9C,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,WAAW,CAAA;IAC/B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;IACtC,uDAAuD;IACvD,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC/B,yBAAyB;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IAC3C,yDAAyD;IACzD,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AA4ED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,kBAAuB,GAAG,IAAI,CAGvE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,IAAI,qBAAqB,CAarD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,GAAE,WAAsB,GAAG;IAClE,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,WAAW,CAAA;CACnB,CAEA;AAED,oDAAoD;AACpD,wBAAgB,eAAe,IAAI,IAAI,CAMtC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { computed as e, readonly as t, ref as n, watch as r } from "vue";
|
|
2
|
+
//#region src/composables/useAppearance.composable.ts
|
|
3
|
+
var i = {
|
|
4
|
+
storageKey: "nubisco.appearance",
|
|
5
|
+
defaultAppearance: "square",
|
|
6
|
+
attribute: "data-nb-appearance",
|
|
7
|
+
persist: !0
|
|
8
|
+
}, a = { ...i }, o = !1, s = n(i.defaultAppearance);
|
|
9
|
+
function c(e) {
|
|
10
|
+
return e === "square" || e === "rounded";
|
|
11
|
+
}
|
|
12
|
+
function l() {
|
|
13
|
+
if (!a.persist) return null;
|
|
14
|
+
try {
|
|
15
|
+
if (typeof localStorage > "u") return null;
|
|
16
|
+
let e = localStorage.getItem(a.storageKey);
|
|
17
|
+
return c(e) ? e : null;
|
|
18
|
+
} catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function u(e) {
|
|
23
|
+
if (a.persist) try {
|
|
24
|
+
if (typeof localStorage > "u") return;
|
|
25
|
+
localStorage.setItem(a.storageKey, e);
|
|
26
|
+
} catch {}
|
|
27
|
+
}
|
|
28
|
+
function d() {
|
|
29
|
+
typeof document > "u" || document.documentElement.setAttribute(a.attribute, s.value);
|
|
30
|
+
}
|
|
31
|
+
var f = null;
|
|
32
|
+
function p() {
|
|
33
|
+
s.value = l() ?? a.defaultAppearance, d(), f?.(), f = r(s, (e) => {
|
|
34
|
+
u(e), d();
|
|
35
|
+
}), o = !0;
|
|
36
|
+
}
|
|
37
|
+
function m(e = {}) {
|
|
38
|
+
a = {
|
|
39
|
+
...a,
|
|
40
|
+
...e
|
|
41
|
+
}, p();
|
|
42
|
+
}
|
|
43
|
+
function h() {
|
|
44
|
+
return o || p(), {
|
|
45
|
+
appearance: t(s),
|
|
46
|
+
isRounded: e(() => s.value === "rounded"),
|
|
47
|
+
setAppearance: (e) => {
|
|
48
|
+
s.value = e;
|
|
49
|
+
},
|
|
50
|
+
toggle: () => {
|
|
51
|
+
s.value = s.value === "rounded" ? "square" : "rounded";
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function g(e = "square") {
|
|
56
|
+
return {
|
|
57
|
+
attribute: a.attribute,
|
|
58
|
+
value: e
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function _() {
|
|
62
|
+
f?.(), f = null, a = { ...i }, s.value = i.defaultAppearance, o = !1;
|
|
63
|
+
}
|
|
64
|
+
//#endregion
|
|
65
|
+
export { g as appearanceAttribute, m as configureAppearance, _ as resetAppearance, h as useAppearance };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../chunk-D-qHiVGv.cjs`);const e=require(`./useReducedMotion.composable.cjs`),t=require(`../Icon-C8R_r_In.cjs`),n=require(`../Grid-DVT8lBHr.cjs`)
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../chunk-D-qHiVGv.cjs`);const e=require(`./useReducedMotion.composable.cjs`),t=require(`../Icon-C8R_r_In.cjs`),n=require(`../Grid-DVT8lBHr.cjs`);require(`../Modal-DvukGfHg.cjs`);const r=require(`../Confirm-w3Ig0L5j.cjs`);let i=require(`vue`);var a=900,o=class extends Error{constructor(){super(`confirm timed out`),this.name=`ConfirmTimeout`}},s=`This is taking longer than expected. It may still be running. Check before trying again.`,c=(0,i.shallowRef)(null),l=(0,i.ref)(!1),u=(0,i.ref)(!1),d=(0,i.ref)(!1),f=(0,i.ref)(void 0),p=[],m=null,h=null,g=null,_=null;function v(){return e.prefersReducedMotion()?0:200}function y(){_&&clearTimeout(_),_=null}function b(e){if(e instanceof Error&&e.message)return e.message;let t=String(e);return t===`[object Object]`?`Something went wrong.`:t}function x(){g=null;let e=p.shift()??null;c.value=e,l.value=!!e}function S(e,t){return!e.done&&e.attempt===t&&c.value===e}function C(e,t=c.value){!t||t.done||t===c.value&&(t.done=!0,y(),l.value=!1,u.value=!1,d.value=!1,f.value=void 0,t.resolve(e),g&&clearTimeout(g),g=setTimeout(x,v()))}function w(e,t){return new Promise((n,r)=>{let i=setTimeout(()=>r(new o),t);e.then(e=>{clearTimeout(i),n(e)},e=>{clearTimeout(i),r(e)})})}async function T(){let e=c.value;if(!e||e.done||u.value||d.value)return;let{onConfirm:t,formatError:n,timeout:r,timeoutMessage:i,successLabel:l}=e.options;if(!t){C(!0,e);return}let p=++e.attempt;u.value=!0,f.value=void 0;try{let n=Promise.resolve(t());if(await(r&&r>0?w(n,r):n),!S(e,p))return;u.value=!1,l?(d.value=!0,_=setTimeout(()=>C(!0,e),a)):C(!0,e)}catch(t){if(!S(e,p))return;u.value=!1,f.value=t instanceof o?i??s:(n??b)(t)}}function E(e){let t={...e??{title:``}};return delete t.onConfirm,delete t.formatError,delete t.body,t}var D=(0,i.defineComponent)({name:`NbConfirmHost`,setup(){return()=>{let e=c.value?.options??null,t=e?.body;return(0,i.h)(r.t,{...E(e),open:l.value,busy:u.value,succeeded:d.value,error:f.value??``,onConfirm:T,onCancel:()=>C(!1)},t?{default:()=>t()}:void 0)}}});function O(){if(!m){if(typeof document>`u`)throw Error(`[NbConfirm] confirm() needs a DOM. It cannot run during server-side rendering or in a non-browser environment. Call it from an event handler, not from setup().`);h=document.createElement(`div`),h.setAttribute(`data-nb-confirm-host`,``),document.body.appendChild(h),m=(0,i.createApp)(D),m.component(`NbIcon`,t.t),m.component(`NbGrid`,n.t),m.config.warnHandler=(e,t,n)=>{if(e.includes(`Failed to resolve component`)){console.error(`[NbConfirm] ${e} The dialog runs in its own Vue app, so a sibling resolved by name has to be registered in useConfirm.composable.ts. Import it in NbConfirm instead where you can.`);return}console.warn(`[NbConfirm] ${e}${n}`)},m.mount(h)}}function k(e){return O(),new Promise(t=>{let n={options:e,resolve:t,attempt:0,done:!1};if(c.value){p.push(n);return}c.value=n,l.value=!0})}function A(){g&&=(clearTimeout(g),null),y();let e=[...p];p.length=0;let t=c.value;for(let n of t?[t,...e]:e)n.done=!0;t?.resolve(!1);for(let t of e)t.resolve(!1);c.value=null,l.value=!1,u.value=!1,d.value=!1,f.value=void 0,m?.unmount(),m=null,h?.remove(),h=null}function j(){return k}exports.dismissConfirms=A,exports.useConfirm=j;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { prefersReducedMotion as e } from "./useReducedMotion.composable.mjs";
|
|
2
2
|
import { t } from "../Icon-rREAqsu0.js";
|
|
3
3
|
import { t as n } from "../Grid-CVNb1HcS.js";
|
|
4
|
-
import
|
|
4
|
+
import "../Modal-B1CQyPNo.js";
|
|
5
|
+
import { t as r } from "../Confirm-C-HRTF0s.js";
|
|
5
6
|
import { createApp as i, defineComponent as a, h as o, ref as s, shallowRef as c } from "vue";
|
|
6
7
|
//#region src/composables/useConfirm.composable.ts
|
|
7
8
|
var l = 900, u = class extends Error {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../chunk-D-qHiVGv.cjs`);let e=require(`vue`);var t=[`a[href]:not([tabindex="-1"])`,`area[href]:not([tabindex="-1"])`,`button:not([disabled]):not([tabindex="-1"])`,`input:not([disabled]):not([type="hidden"]):not([tabindex="-1"])`,`select:not([disabled]):not([tabindex="-1"])`,`textarea:not([disabled]):not([tabindex="-1"])`,`summary:not([tabindex="-1"])`,`audio[controls]:not([tabindex="-1"])`,`video[controls]:not([tabindex="-1"])`,`iframe:not([tabindex="-1"])`,`[contenteditable]:not([contenteditable="false"]):not([tabindex="-1"])`,`[tabindex]:not([tabindex="-1"])`].map(e=>`${e}:not([hidden]):not([aria-hidden="true"])`).join(`,`);function n(e){return e?Array.from(e.querySelectorAll(t)).filter(e=>e.getAttribute(`aria-disabled`)!==`true`):[]}function r(){return typeof document>`u`?[]:Array.from(document.querySelectorAll(`[aria-modal="true"]`))}function i(e){if(!e)return!1;let t=r();return t.length===0||t[t.length-1]===e}function a(t){let{container:r,active:a,initialFocus:o,floatingSelector:s}=t;function c(e){let t=s?.();return!t||!e?!1:!!e.closest(t)}function l(e){let t=r();return!!t&&!!e&&t.contains(e)}function u(){return n(r())}function d(){r()?.focus()}function f(){let e=u()[0];e?e.focus():d()}let p=null;function m(){let e=p;p=null,e?.isConnected&&e.focus()}function h(){p=document.activeElement instanceof HTMLElement?document.activeElement:null}function g(e){if(e.key!==`Tab`||!a())return;let t=r();if(!t||!i(t)||c(document.activeElement))return;let n=u(),o=document.activeElement;if(n.length===0){e.preventDefault(),l(o)||d();return}let s=n[0],f=n[n.length-1];e.shiftKey&&(o===s||!l(o))?(e.preventDefault(),f.focus()):!e.shiftKey&&o===f?(e.preventDefault(),s.focus()):l(o)||(e.preventDefault(),s.focus())}function _(e){if(!a())return;let t=e.relatedTarget;if(t instanceof Element){if(l(t)||c(t))return}else if(t!==null)return;requestAnimationFrame(()=>{if(!a())return;let e=document.activeElement;l(e)||c(e)||e&&e!==document.body&&!e.isConnected||i(r())&&f()})}typeof document<`u`&&(document.addEventListener(`keydown`,g,!0),document.addEventListener(`focusout`,_,!0));async function v(){if(await(0,e.nextTick)(),!a())return;let t=o?.()??null;t?t.focus():f()}return(0,e.watch)(a,(e,t)=>{e!==t&&(e?(h(),v()):m())}),(0,e.onMounted)(()=>{a()&&(h(),v())}),(0,e.onUnmounted)(()=>{typeof document<`u`&&(document.removeEventListener(`keydown`,g,!0),document.removeEventListener(`focusout`,_,!0)),m()}),{focusInside:f,restoreFocus:m}}exports.FOCUSABLE_SELECTOR=t,exports.focusablesWithin=n,exports.isTopmostSurface=i,exports.openModalSurfaces=r,exports.useFocusTrap=a;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keeping keyboard focus inside the surface in front of the user.
|
|
3
|
+
*
|
|
4
|
+
* A modal surface is only modal to the eye. The scrim paints over the page but
|
|
5
|
+
* does nothing to the tab order, so Tab walks straight out of the dialog and
|
|
6
|
+
* onto the document behind it: the user is typing into a form they cannot see,
|
|
7
|
+
* and a screen reader is reading a page the scrim says is unavailable. NbModal
|
|
8
|
+
* shipped in exactly that state while its own documentation promised a focus
|
|
9
|
+
* trap, and the showcase reproduced it in one keypress.
|
|
10
|
+
*
|
|
11
|
+
* The rules were already written twice in this library, to two different
|
|
12
|
+
* standards. NbConfirm has the thorough version (arbitrary slot content,
|
|
13
|
+
* teleported popups, a pending state with nothing left to focus); NbWalkthrough
|
|
14
|
+
* has a five-selector approximation; NbModal, the component both of the others
|
|
15
|
+
* are built to sit inside, had none. What "focusable" means is not a per
|
|
16
|
+
* component opinion, so it lives here once and the surfaces share it.
|
|
17
|
+
*
|
|
18
|
+
* The trap is deliberately not an `inert` attribute on the rest of the
|
|
19
|
+
* document. `inert` is the better primitive, but it applies to siblings of the
|
|
20
|
+
* dialog, and this library teleports overlays to `<body>` next to an
|
|
21
|
+
* application root it does not own and must not mutate.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* What the browser will stop on with Tab, as far as a dialog needs to care.
|
|
25
|
+
*
|
|
26
|
+
* The long tail matters because a dialog body takes arbitrary content: a
|
|
27
|
+
* preview of the record being deleted is often an `<iframe>`, an embedded
|
|
28
|
+
* player, an image map or a rich-text field, and every one of those is a tab
|
|
29
|
+
* stop the trap has to know about or the cycle breaks at the dialog edge.
|
|
30
|
+
* Elements that are focusable but explicitly removed from the tab order
|
|
31
|
+
* (`tabindex="-1"`, which is how a dialog box itself holds focus) are
|
|
32
|
+
* excluded, as are controls hidden from assistive technology or from the page.
|
|
33
|
+
*/
|
|
34
|
+
export declare const FOCUSABLE_SELECTOR: string;
|
|
35
|
+
/**
|
|
36
|
+
* The tab stops inside `root`, in document order.
|
|
37
|
+
*
|
|
38
|
+
* `aria-disabled` is filtered as well as `disabled`, because a control that
|
|
39
|
+
* reports itself unavailable to assistive technology should not be the thing
|
|
40
|
+
* the trap parks focus on, and our own buttons use it for the states a native
|
|
41
|
+
* `disabled` would make unreachable.
|
|
42
|
+
*/
|
|
43
|
+
export declare function focusablesWithin(root: HTMLElement | null): HTMLElement[];
|
|
44
|
+
/** Every `aria-modal` surface currently on screen, in document order. */
|
|
45
|
+
export declare function openModalSurfaces(): HTMLElement[];
|
|
46
|
+
/**
|
|
47
|
+
* Whether `el` is the last `aria-modal` surface in the document, which for
|
|
48
|
+
* teleported overlays is the one painted on top.
|
|
49
|
+
*
|
|
50
|
+
* Two dialogs open at once (a confirm raised from inside a modal, which is a
|
|
51
|
+
* supported composition) both listen on the document, so without this test one
|
|
52
|
+
* Tab is answered twice and the older instance wins: focus jumps to a dialog
|
|
53
|
+
* the user cannot see.
|
|
54
|
+
*/
|
|
55
|
+
export declare function isTopmostSurface(el: HTMLElement | null): boolean;
|
|
56
|
+
export interface IFocusTrapOptions {
|
|
57
|
+
/** The element focus is held inside. Read live: it mounts after `active`. */
|
|
58
|
+
container: () => HTMLElement | null;
|
|
59
|
+
/** Whether the trap should currently be holding focus. */
|
|
60
|
+
active: () => boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Where focus goes when the trap activates. Defaults to the first tab stop,
|
|
63
|
+
* falling back to the container itself. Return `null` to take the default.
|
|
64
|
+
*
|
|
65
|
+
* A destructive dialog overrides this to land on Cancel: the confirm button
|
|
66
|
+
* is one Space away from whatever is focused when a dialog appears, and a
|
|
67
|
+
* surface that steals focus onto a destructive default turns a stray
|
|
68
|
+
* keypress into a deletion.
|
|
69
|
+
*/
|
|
70
|
+
initialFocus?: () => HTMLElement | null;
|
|
71
|
+
/**
|
|
72
|
+
* A selector for teleported popups that belong to this surface, such as a
|
|
73
|
+
* select listbox rendered to `<body>` by a control inside the dialog. Focus
|
|
74
|
+
* inside one of those is not an escape and must not be dragged back.
|
|
75
|
+
*/
|
|
76
|
+
floatingSelector?: () => string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Holds keyboard focus inside a surface for as long as it is active, and hands
|
|
80
|
+
* it back to whatever opened it afterwards.
|
|
81
|
+
*
|
|
82
|
+
* Returns nothing to call in the common case: it wires itself to the component
|
|
83
|
+
* scope, follows `active()`, and cleans up on unmount. `restoreFocus` is
|
|
84
|
+
* exposed for the host that is destroyed outright rather than closed, where
|
|
85
|
+
* there is no state change left for the watcher to see.
|
|
86
|
+
*/
|
|
87
|
+
export declare function useFocusTrap(options: IFocusTrapOptions): {
|
|
88
|
+
focusInside: () => void;
|
|
89
|
+
restoreFocus: () => void;
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=useFocusTrap.composable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFocusTrap.composable.d.ts","sourceRoot":"","sources":["../../src/composables/useFocusTrap.composable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,QAenB,CAAA;AAEZ;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,WAAW,EAAE,CAKxE;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,IAAI,WAAW,EAAE,CAKjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAIhE;AAED,MAAM,WAAW,iBAAiB;IAChC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;IACnC,0DAA0D;IAC1D,MAAM,EAAE,MAAM,OAAO,CAAA;IACrB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;IACvC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAA;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,iBAAiB,GAAG;IACxD,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB,CAgLA"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { nextTick as e, onMounted as t, onUnmounted as n, watch as r } from "vue";
|
|
2
|
+
//#region src/composables/useFocusTrap.composable.ts
|
|
3
|
+
var i = [
|
|
4
|
+
"a[href]:not([tabindex=\"-1\"])",
|
|
5
|
+
"area[href]:not([tabindex=\"-1\"])",
|
|
6
|
+
"button:not([disabled]):not([tabindex=\"-1\"])",
|
|
7
|
+
"input:not([disabled]):not([type=\"hidden\"]):not([tabindex=\"-1\"])",
|
|
8
|
+
"select:not([disabled]):not([tabindex=\"-1\"])",
|
|
9
|
+
"textarea:not([disabled]):not([tabindex=\"-1\"])",
|
|
10
|
+
"summary:not([tabindex=\"-1\"])",
|
|
11
|
+
"audio[controls]:not([tabindex=\"-1\"])",
|
|
12
|
+
"video[controls]:not([tabindex=\"-1\"])",
|
|
13
|
+
"iframe:not([tabindex=\"-1\"])",
|
|
14
|
+
"[contenteditable]:not([contenteditable=\"false\"]):not([tabindex=\"-1\"])",
|
|
15
|
+
"[tabindex]:not([tabindex=\"-1\"])"
|
|
16
|
+
].map((e) => `${e}:not([hidden]):not([aria-hidden="true"])`).join(",");
|
|
17
|
+
function a(e) {
|
|
18
|
+
return e ? Array.from(e.querySelectorAll(i)).filter((e) => e.getAttribute("aria-disabled") !== "true") : [];
|
|
19
|
+
}
|
|
20
|
+
function o() {
|
|
21
|
+
return typeof document > "u" ? [] : Array.from(document.querySelectorAll("[aria-modal=\"true\"]"));
|
|
22
|
+
}
|
|
23
|
+
function s(e) {
|
|
24
|
+
if (!e) return !1;
|
|
25
|
+
let t = o();
|
|
26
|
+
return t.length === 0 || t[t.length - 1] === e;
|
|
27
|
+
}
|
|
28
|
+
function c(i) {
|
|
29
|
+
let { container: o, active: c, initialFocus: l, floatingSelector: u } = i;
|
|
30
|
+
function d(e) {
|
|
31
|
+
let t = u?.();
|
|
32
|
+
return !t || !e ? !1 : !!e.closest(t);
|
|
33
|
+
}
|
|
34
|
+
function f(e) {
|
|
35
|
+
let t = o();
|
|
36
|
+
return !!t && !!e && t.contains(e);
|
|
37
|
+
}
|
|
38
|
+
function p() {
|
|
39
|
+
return a(o());
|
|
40
|
+
}
|
|
41
|
+
function m() {
|
|
42
|
+
o()?.focus();
|
|
43
|
+
}
|
|
44
|
+
function h() {
|
|
45
|
+
let e = p()[0];
|
|
46
|
+
e ? e.focus() : m();
|
|
47
|
+
}
|
|
48
|
+
let g = null;
|
|
49
|
+
function _() {
|
|
50
|
+
let e = g;
|
|
51
|
+
g = null, e?.isConnected && e.focus();
|
|
52
|
+
}
|
|
53
|
+
function v() {
|
|
54
|
+
g = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
55
|
+
}
|
|
56
|
+
function y(e) {
|
|
57
|
+
if (e.key !== "Tab" || !c()) return;
|
|
58
|
+
let t = o();
|
|
59
|
+
if (!t || !s(t) || d(document.activeElement)) return;
|
|
60
|
+
let n = p(), r = document.activeElement;
|
|
61
|
+
if (n.length === 0) {
|
|
62
|
+
e.preventDefault(), f(r) || m();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
let i = n[0], a = n[n.length - 1];
|
|
66
|
+
e.shiftKey && (r === i || !f(r)) ? (e.preventDefault(), a.focus()) : !e.shiftKey && r === a ? (e.preventDefault(), i.focus()) : f(r) || (e.preventDefault(), i.focus());
|
|
67
|
+
}
|
|
68
|
+
function b(e) {
|
|
69
|
+
if (!c()) return;
|
|
70
|
+
let t = e.relatedTarget;
|
|
71
|
+
if (t instanceof Element) {
|
|
72
|
+
if (f(t) || d(t)) return;
|
|
73
|
+
} else if (t !== null) return;
|
|
74
|
+
requestAnimationFrame(() => {
|
|
75
|
+
if (!c()) return;
|
|
76
|
+
let e = document.activeElement;
|
|
77
|
+
f(e) || d(e) || e && e !== document.body && !e.isConnected || s(o()) && h();
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
typeof document < "u" && (document.addEventListener("keydown", y, !0), document.addEventListener("focusout", b, !0));
|
|
81
|
+
async function x() {
|
|
82
|
+
if (await e(), !c()) return;
|
|
83
|
+
let t = l?.() ?? null;
|
|
84
|
+
t ? t.focus() : h();
|
|
85
|
+
}
|
|
86
|
+
return r(c, (e, t) => {
|
|
87
|
+
e !== t && (e ? (v(), x()) : _());
|
|
88
|
+
}), t(() => {
|
|
89
|
+
c() && (v(), x());
|
|
90
|
+
}), n(() => {
|
|
91
|
+
typeof document < "u" && (document.removeEventListener("keydown", y, !0), document.removeEventListener("focusout", b, !0)), _();
|
|
92
|
+
}), {
|
|
93
|
+
focusInside: h,
|
|
94
|
+
restoreFocus: _
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
//#endregion
|
|
98
|
+
export { i as FOCUSABLE_SELECTOR, a as focusablesWithin, s as isTopmostSurface, o as openModalSurfaces, c as useFocusTrap };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../chunk-D-qHiVGv.cjs`);let e=require(`vue`);var t={storageKey:`nubisco.named-theme`,defaultTheme:null,attribute:`data-nb-theme`,themes:null,persist:!0},n={...t},r=!1,i=(0,e.ref)(t.defaultTheme);function a(e){return typeof e==`string`&&/^[a-z0-9-]{1,64}$/.test(e)}function o(e){return!n.themes||n.themes.includes(e)}function s(){if(!n.persist)return null;try{if(typeof localStorage>`u`)return null;let e=localStorage.getItem(n.storageKey);return e===null||e===``?null:a(e)&&o(e)?e:null}catch{return null}}function c(e){if(n.persist)try{if(typeof localStorage>`u`)return;e===null?localStorage.removeItem(n.storageKey):localStorage.setItem(n.storageKey,e)}catch{}}function l(){if(typeof document>`u`)return;let e=i.value;e===null?document.documentElement.removeAttribute(n.attribute):document.documentElement.setAttribute(n.attribute,e)}var u=null;function d(){let t=s(),d=n.defaultTheme;i.value=t??(d!==null&&a(d)&&o(d)?d:null),l(),u?.(),u=(0,e.watch)(i,e=>{c(e),l()}),r=!0}function f(e={}){n={...n,...e,themes:e.themes??n.themes},d()}function p(){return r||d(),{namedTheme:(0,e.readonly)(i),isCustom:(0,e.computed)(()=>i.value!==null),setNamedTheme:e=>{if(e===null){i.value=null;return}!a(e)||!o(e)||(i.value=e)}}}function m(){u?.(),u=null,n={...t},i.value=t.defaultTheme,r=!1,typeof document<`u`&&document.documentElement.removeAttribute(t.attribute)}exports.configureNamedTheme=f,exports.isValidThemeId=a,exports.resetNamedTheme=m,exports.useNamedTheme=p;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selecting one of several named colour themes at runtime.
|
|
3
|
+
*
|
|
4
|
+
* The third of three independent axes, and deliberately the same shape as the
|
|
5
|
+
* other two:
|
|
6
|
+
*
|
|
7
|
+
* | Axis | Written to | Owner |
|
|
8
|
+
* | ----------- | ---------------------- | ------------------ |
|
|
9
|
+
* | Colour mode | `.dark` on `<html>` | `useTheme()` |
|
|
10
|
+
* | Appearance | `data-nb-appearance` | `useAppearance()` |
|
|
11
|
+
* | Named theme | `data-nb-theme` | this file |
|
|
12
|
+
*
|
|
13
|
+
* They never touch each other. A theme carries colour only: it supplies both a
|
|
14
|
+
* light and a dark half and the existing `.dark` class chooses between them, so
|
|
15
|
+
* switching theme cannot reset the mode, and switching mode cannot reset the
|
|
16
|
+
* theme. Neither disturbs the corner geometry.
|
|
17
|
+
*
|
|
18
|
+
* ## It does not know your palette
|
|
19
|
+
*
|
|
20
|
+
* This applies an identifier and nothing else. The values live in CSS, emitted
|
|
21
|
+
* by the SCSS a consumer imports, so adding a theme is one import plus one
|
|
22
|
+
* string. Nothing here has to be told what "ocean" looks like, and a consumer
|
|
23
|
+
* never restates a palette in JavaScript to make one selectable.
|
|
24
|
+
*
|
|
25
|
+
* Human-readable labels for a theme picker are the application's business and
|
|
26
|
+
* stay out of the styling contract: keep them in your own list, keyed by id.
|
|
27
|
+
*/
|
|
28
|
+
import { type ComputedRef, type Ref } from 'vue';
|
|
29
|
+
/**
|
|
30
|
+
* A theme identifier, or `null` for the library's built-in default.
|
|
31
|
+
*
|
|
32
|
+
* Any string a stylesheet defines is valid, so this is not a closed union: the
|
|
33
|
+
* whole point is that a consumer can add a theme without changing this file.
|
|
34
|
+
*/
|
|
35
|
+
export type TNamedTheme = string | null;
|
|
36
|
+
export interface INamedThemeOptions {
|
|
37
|
+
/**
|
|
38
|
+
* localStorage key the selection is persisted under. Namespace it per
|
|
39
|
+
* application, so two Nubisco products on one origin do not fight over it.
|
|
40
|
+
*/
|
|
41
|
+
storageKey?: string;
|
|
42
|
+
/** Theme to select when nothing is stored. `null` is the built-in default. */
|
|
43
|
+
defaultTheme?: TNamedTheme;
|
|
44
|
+
/** Attribute placed on `<html>`. Matches the selector the SCSS emits. */
|
|
45
|
+
attribute?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Identifiers this application ships. When given, a stored value outside the
|
|
48
|
+
* list is ignored rather than applied.
|
|
49
|
+
*
|
|
50
|
+
* This is not decoration. The stored value is attacker-influenced in the
|
|
51
|
+
* sense that it survives from any earlier version of the app, and applying an
|
|
52
|
+
* unknown id writes an arbitrary string into a DOM attribute. Listing what
|
|
53
|
+
* exists means a stale or junk value falls back to the default instead.
|
|
54
|
+
*/
|
|
55
|
+
themes?: readonly string[];
|
|
56
|
+
/**
|
|
57
|
+
* Whether the selection is read from and written to storage at all. Turn it
|
|
58
|
+
* off when the application drives the theme from its own settings, so a
|
|
59
|
+
* stored value cannot override what it just asked for.
|
|
60
|
+
*/
|
|
61
|
+
persist?: boolean;
|
|
62
|
+
}
|
|
63
|
+
export interface INamedThemeController {
|
|
64
|
+
/** The selected identifier, or `null` for the default theme. */
|
|
65
|
+
namedTheme: Readonly<Ref<TNamedTheme>>;
|
|
66
|
+
/** True while a named theme is active. */
|
|
67
|
+
isCustom: ComputedRef<boolean>;
|
|
68
|
+
/** Select a theme, or `null` to return to the default. */
|
|
69
|
+
setNamedTheme: (value: TNamedTheme) => void;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Whether a value is usable as a theme id.
|
|
73
|
+
*
|
|
74
|
+
* The same shape the SCSS validates, for the same reason: this string is
|
|
75
|
+
* written into a DOM attribute, so it is checked rather than trusted.
|
|
76
|
+
*/
|
|
77
|
+
export declare function isValidThemeId(value: unknown): value is string;
|
|
78
|
+
/**
|
|
79
|
+
* Names the themes this application ships, and picks the starting one.
|
|
80
|
+
*
|
|
81
|
+
* ```ts
|
|
82
|
+
* configureNamedTheme({ themes: ['ocean', 'forest'], defaultTheme: 'ocean' })
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare function configureNamedTheme(next?: INamedThemeOptions): void;
|
|
86
|
+
/**
|
|
87
|
+
* The selected colour theme.
|
|
88
|
+
*
|
|
89
|
+
* ```vue
|
|
90
|
+
* const { namedTheme, setNamedTheme } = useNamedTheme()
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* An unknown or malformed id is refused rather than written to the document.
|
|
94
|
+
*/
|
|
95
|
+
export declare function useNamedTheme(): INamedThemeController;
|
|
96
|
+
/** Test helper: forgets configuration and selection. */
|
|
97
|
+
export declare function resetNamedTheme(): void;
|
|
98
|
+
//# sourceMappingURL=useNamedTheme.composable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useNamedTheme.composable.d.ts","sourceRoot":"","sources":["../../src/composables/useNamedTheme.composable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAkC,KAAK,WAAW,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAA;AAEhF;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,IAAI,CAAA;AAEvC,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,WAAW,CAAA;IAC1B,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;IACtC,0CAA0C;IAC1C,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IAC9B,0DAA0D;IAC1D,aAAa,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;CAC5C;AAiBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE9D;AAuED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,kBAAuB,GAAG,IAAI,CAGvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,IAAI,qBAAqB,CAerD;AAED,wDAAwD;AACxD,wBAAgB,eAAe,IAAI,IAAI,CAQtC"}
|