@nonsuch/component-library 0.5.0 → 0.7.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/components/NsAvatar/NsAvatar.vue.d.ts +40 -0
- package/dist/components/NsAvatar/index.d.ts +1 -0
- package/dist/components/NsBadge/NsBadge.vue.d.ts +15 -0
- package/dist/components/NsBadge/index.d.ts +1 -0
- package/dist/components/NsBanner/NsBanner.vue.d.ts +30 -0
- package/dist/components/NsBanner/index.d.ts +1 -0
- package/dist/components/NsBreadcrumbElement/NsBreadcrumbElement.vue.d.ts +15 -0
- package/dist/components/NsBreadcrumbElement/index.d.ts +1 -0
- package/dist/components/NsBreadcrumbs/NsBreadcrumbs.vue.d.ts +15 -0
- package/dist/components/NsBreadcrumbs/index.d.ts +1 -0
- package/dist/components/NsButton/NsButton.vue.d.ts +42 -0
- package/dist/components/NsButton/index.d.ts +1 -0
- package/dist/components/NsButtonToggle/NsButtonToggle.vue.d.ts +32 -0
- package/dist/components/NsButtonToggle/index.d.ts +1 -0
- package/dist/components/NsCard/NsCard.vue.d.ts +35 -0
- package/dist/components/NsCard/index.d.ts +1 -0
- package/dist/components/NsCardActions/NsCardActions.vue.d.ts +15 -0
- package/dist/components/NsCardActions/index.d.ts +1 -0
- package/dist/components/NsCardSection/NsCardSection.vue.d.ts +15 -0
- package/dist/components/NsCardSection/index.d.ts +1 -0
- package/dist/components/NsCheckbox/NsCheckbox.vue.d.ts +25 -0
- package/dist/components/NsCheckbox/index.d.ts +1 -0
- package/dist/components/NsChip/NsChip.vue.d.ts +38 -0
- package/dist/components/NsChip/index.d.ts +1 -0
- package/dist/components/NsDialog/NsDialog.vue.d.ts +42 -0
- package/dist/components/NsDialog/index.d.ts +1 -0
- package/dist/components/NsFooter/NsFooter.vue.d.ts +15 -0
- package/dist/components/NsFooter/index.d.ts +1 -0
- package/dist/components/NsForm/NsForm.vue.d.ts +28 -0
- package/dist/components/NsForm/index.d.ts +1 -0
- package/dist/components/NsHeader/NsHeader.vue.d.ts +15 -0
- package/dist/components/NsHeader/index.d.ts +1 -0
- package/dist/components/NsIcon/NsIcon.vue.d.ts +15 -0
- package/dist/components/NsIcon/index.d.ts +1 -0
- package/dist/components/NsImage/NsImage.vue.d.ts +15 -0
- package/dist/components/NsImage/index.d.ts +1 -0
- package/dist/components/NsInnerLoading/NsInnerLoading.vue.d.ts +15 -0
- package/dist/components/NsInnerLoading/index.d.ts +1 -0
- package/dist/components/NsInput/NsInput.vue.d.ts +36 -0
- package/dist/components/NsInput/index.d.ts +1 -0
- package/dist/components/NsItem/NsItem.vue.d.ts +15 -0
- package/dist/components/NsItem/index.d.ts +1 -0
- package/dist/components/NsItemLabel/NsItemLabel.vue.d.ts +15 -0
- package/dist/components/NsItemLabel/index.d.ts +1 -0
- package/dist/components/NsItemSection/NsItemSection.vue.d.ts +15 -0
- package/dist/components/NsItemSection/index.d.ts +1 -0
- package/dist/components/NsLayout/NsLayout.vue.d.ts +15 -0
- package/dist/components/NsLayout/index.d.ts +1 -0
- package/dist/components/NsLinearProgress/NsLinearProgress.vue.d.ts +15 -0
- package/dist/components/NsLinearProgress/index.d.ts +1 -0
- package/dist/components/NsList/NsList.vue.d.ts +28 -0
- package/dist/components/NsList/index.d.ts +1 -0
- package/dist/components/NsMenu/NsMenu.vue.d.ts +15 -0
- package/dist/components/NsMenu/index.d.ts +1 -0
- package/dist/components/NsPage/NsPage.vue.d.ts +15 -0
- package/dist/components/NsPage/index.d.ts +1 -0
- package/dist/components/NsPageContainer/NsPageContainer.vue.d.ts +15 -0
- package/dist/components/NsPageContainer/index.d.ts +1 -0
- package/dist/components/NsPagination/NsPagination.vue.d.ts +26 -0
- package/dist/components/NsPagination/index.d.ts +1 -0
- package/dist/components/NsSelect/NsSelect.vue.d.ts +53 -0
- package/dist/components/NsSelect/index.d.ts +1 -0
- package/dist/components/NsSeparator/NsSeparator.vue.d.ts +5 -0
- package/dist/components/NsSeparator/index.d.ts +1 -0
- package/dist/components/NsSkeleton/NsSkeleton.vue.d.ts +26 -0
- package/dist/components/NsSkeleton/index.d.ts +2 -0
- package/dist/components/NsSpace/NsSpace.vue.d.ts +15 -0
- package/dist/components/NsSpace/index.d.ts +1 -0
- package/dist/components/NsSpinner/NsSpinner.vue.d.ts +5 -0
- package/dist/components/NsSpinner/index.d.ts +1 -0
- package/dist/components/NsSpinnerDots/NsSpinnerDots.vue.d.ts +5 -0
- package/dist/components/NsSpinnerDots/index.d.ts +1 -0
- package/dist/components/NsTab/NsTab.vue.d.ts +15 -0
- package/dist/components/NsTab/index.d.ts +1 -0
- package/dist/components/NsTabPanel/NsTabPanel.vue.d.ts +17 -0
- package/dist/components/NsTabPanel/index.d.ts +1 -0
- package/dist/components/NsTabPanels/NsTabPanels.vue.d.ts +23 -0
- package/dist/components/NsTabPanels/index.d.ts +1 -0
- package/dist/components/NsTable/NsTable.vue.d.ts +19 -0
- package/dist/components/NsTable/index.d.ts +1 -0
- package/dist/components/NsTableCell/NsTableCell.vue.d.ts +15 -0
- package/dist/components/NsTableCell/index.d.ts +1 -0
- package/dist/components/NsTabs/NsTabs.vue.d.ts +15 -0
- package/dist/components/NsTabs/index.d.ts +1 -0
- package/dist/components/NsThemeProvider/NsThemeProvider.vue.d.ts +36 -0
- package/dist/components/NsThemeProvider/index.d.ts +1 -0
- package/dist/components/NsTimeline/NsTimeline.vue.d.ts +15 -0
- package/dist/components/NsTimeline/index.d.ts +1 -0
- package/dist/components/NsTimelineEntry/NsTimelineEntry.vue.d.ts +15 -0
- package/dist/components/NsTimelineEntry/index.d.ts +1 -0
- package/dist/components/NsToggle/NsToggle.vue.d.ts +25 -0
- package/dist/components/NsToggle/index.d.ts +1 -0
- package/dist/components/NsToolbar/NsToolbar.vue.d.ts +15 -0
- package/dist/components/NsToolbar/index.d.ts +1 -0
- package/dist/components/NsToolbarTitle/NsToolbarTitle.vue.d.ts +15 -0
- package/dist/components/NsToolbarTitle/index.d.ts +1 -0
- package/dist/components/NsTooltip/NsTooltip.vue.d.ts +29 -0
- package/dist/components/NsTooltip/index.d.ts +1 -0
- package/dist/composables/index.d.ts +4 -0
- package/dist/composables/useNsDarkMode.d.ts +37 -0
- package/dist/composables/useNsDefaults.d.ts +25 -0
- package/dist/composables/useNsLocale.d.ts +28 -0
- package/dist/index.d.ts +112 -0
- package/dist/locale/NsLocaleMessages.d.ts +58 -0
- package/dist/locale/en-CA.d.ts +8 -0
- package/dist/locale/fr-CA.d.ts +5 -0
- package/dist/locale/index.d.ts +3 -0
- package/dist/manifest.d.ts +26 -0
- package/dist/nonsuch-components.css +1 -1
- package/dist/nonsuch-components.js +847 -303
- package/dist/plugin.d.ts +42 -0
- package/dist/quasarConfig.d.ts +41 -0
- package/dist/tokens/index.d.ts +20 -0
- package/package.json +5 -3
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type NsTooltipAnchor = 'top left' | 'top middle' | 'top right' | 'top start' | 'top end' | 'center left' | 'center middle' | 'center right' | 'center start' | 'center end' | 'bottom left' | 'bottom middle' | 'bottom right' | 'bottom start' | 'bottom end';
|
|
2
|
+
export interface NsTooltipProps {
|
|
3
|
+
/** Delay before showing (ms) */
|
|
4
|
+
delay?: number;
|
|
5
|
+
/** Offset from anchor element [y, x] */
|
|
6
|
+
offset?: [number, number];
|
|
7
|
+
/** Anchor point on the parent */
|
|
8
|
+
anchor?: NsTooltipAnchor;
|
|
9
|
+
/** Self alignment point */
|
|
10
|
+
self?: NsTooltipAnchor;
|
|
11
|
+
}
|
|
12
|
+
declare var __VLS_8: {};
|
|
13
|
+
type __VLS_Slots = {} & {
|
|
14
|
+
default?: (props: typeof __VLS_8) => any;
|
|
15
|
+
};
|
|
16
|
+
declare const __VLS_base: import("vue").DefineComponent<NsTooltipProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<NsTooltipProps> & Readonly<{}>, {
|
|
17
|
+
anchor: NsTooltipAnchor;
|
|
18
|
+
delay: number;
|
|
19
|
+
offset: [number, number];
|
|
20
|
+
self: NsTooltipAnchor;
|
|
21
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
22
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
23
|
+
declare const _default: typeof __VLS_export;
|
|
24
|
+
export default _default;
|
|
25
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
26
|
+
new (): {
|
|
27
|
+
$slots: S;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as NsTooltip } from './NsTooltip.vue';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type Ref } from 'vue';
|
|
2
|
+
type DarkModeSource = 'user' | 'system' | 'storage';
|
|
3
|
+
export interface UseNsDarkModeReturn {
|
|
4
|
+
/** Whether dark mode is currently active */
|
|
5
|
+
isDark: Readonly<Ref<boolean>>;
|
|
6
|
+
/** What triggered the current state */
|
|
7
|
+
source: Readonly<Ref<DarkModeSource>>;
|
|
8
|
+
/** Enable dark mode */
|
|
9
|
+
enable: () => void;
|
|
10
|
+
/** Disable dark mode */
|
|
11
|
+
disable: () => void;
|
|
12
|
+
/** Toggle dark mode */
|
|
13
|
+
toggle: () => void;
|
|
14
|
+
/** Reset to system preference (clears localStorage override) */
|
|
15
|
+
useSystem: () => void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Dark-mode composable that syncs the document root classes/attributes
|
|
19
|
+
* with the design-token dark selectors and persists user preference.
|
|
20
|
+
*
|
|
21
|
+
* Activation order:
|
|
22
|
+
* 1. localStorage override (if previously set by user)
|
|
23
|
+
* 2. OS `prefers-color-scheme: dark`
|
|
24
|
+
* 3. Explicit `enable()` / `disable()` / `toggle()` calls
|
|
25
|
+
*
|
|
26
|
+
* This sets `class="dark"` and `data-theme="dark"` on `<html>`,
|
|
27
|
+
* matching the selectors in `tokens.css`.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* import { useNsDarkMode } from '@nonsuch/component-library'
|
|
32
|
+
*
|
|
33
|
+
* const { isDark, toggle } = useNsDarkMode()
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function useNsDarkMode(): UseNsDarkModeReturn;
|
|
37
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ComputedRef } from 'vue';
|
|
2
|
+
type NestedKeyOf<T> = T extends object ? {
|
|
3
|
+
[K in keyof T & string]: T[K] extends object ? `${K}.${NestedKeyOf<T[K]>}` : K;
|
|
4
|
+
}[keyof T & string] : never;
|
|
5
|
+
/**
|
|
6
|
+
* Resolve a user-visible string with the following priority:
|
|
7
|
+
* 1. Explicit prop value (if not undefined/null)
|
|
8
|
+
* 2. Injected Ns locale (via provideNsLocale)
|
|
9
|
+
* 3. Built-in en-CA default
|
|
10
|
+
*
|
|
11
|
+
* Usage inside a component:
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* const props = defineProps<{ addToCartLabel?: string }>()
|
|
15
|
+
* const addToCartText = useNsDefault(() => props.addToCartLabel, 'product.addToCart')
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* In the template: `{{ addToCartText }}`
|
|
19
|
+
*
|
|
20
|
+
* @param prop - Getter returning the optional prop value
|
|
21
|
+
* @param localeKey - Dot-path key into NsLocaleMessages (e.g. 'product.addToCart')
|
|
22
|
+
* @returns Computed string, always resolved
|
|
23
|
+
*/
|
|
24
|
+
export declare function useNsDefault<K extends NestedKeyOf<import('../locale/NsLocaleMessages').NsLocaleMessages>>(prop: () => string | undefined | null, localeKey: K): ComputedRef<string>;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type InjectionKey } from 'vue';
|
|
2
|
+
import type { NsLocaleMessages } from '../locale/NsLocaleMessages';
|
|
3
|
+
/**
|
|
4
|
+
* Injection key for the Ns locale messages.
|
|
5
|
+
* Components use this internally — consumers call provideNsLocale().
|
|
6
|
+
*/
|
|
7
|
+
export declare const NsLocaleKey: InjectionKey<NsLocaleMessages>;
|
|
8
|
+
/**
|
|
9
|
+
* Provide Ns locale messages to all descendant Ns components.
|
|
10
|
+
*
|
|
11
|
+
* Call this in your app's root setup (e.g. App.vue or a boot file):
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { provideNsLocale } from '@nonsuch/component-library'
|
|
15
|
+
* import { myFrenchLocale } from './locales/fr'
|
|
16
|
+
*
|
|
17
|
+
* // In setup()
|
|
18
|
+
* provideNsLocale(myFrenchLocale)
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function provideNsLocale(messages: NsLocaleMessages): void;
|
|
22
|
+
/**
|
|
23
|
+
* Internal composable — used by Ns components to read locale strings.
|
|
24
|
+
*
|
|
25
|
+
* Returns the injected locale or falls back to en-CA defaults.
|
|
26
|
+
* Components should NOT re-export this — it's an implementation detail.
|
|
27
|
+
*/
|
|
28
|
+
export declare function useNsLocale(): NsLocaleMessages;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
export { default as NsButton } from './components/NsButton/NsButton.vue';
|
|
2
|
+
export type { NsButtonProps } from './components/NsButton/NsButton.vue';
|
|
3
|
+
export { default as NsSkeleton } from './components/NsSkeleton/NsSkeleton.vue';
|
|
4
|
+
export type { NsSkeletonProps, NsSkeletonType, NsSkeletonAnimation, } from './components/NsSkeleton/NsSkeleton.vue';
|
|
5
|
+
export { default as NsThemeProvider } from './components/NsThemeProvider/NsThemeProvider.vue';
|
|
6
|
+
export type { NsThemeProviderProps } from './components/NsThemeProvider/NsThemeProvider.vue';
|
|
7
|
+
export { default as NsInput } from './components/NsInput/NsInput.vue';
|
|
8
|
+
export type { NsInputProps } from './components/NsInput/NsInput.vue';
|
|
9
|
+
export { default as NsCard } from './components/NsCard/NsCard.vue';
|
|
10
|
+
export type { NsCardProps } from './components/NsCard/NsCard.vue';
|
|
11
|
+
export { default as NsSelect } from './components/NsSelect/NsSelect.vue';
|
|
12
|
+
export type { NsSelectProps, NsSelectOption } from './components/NsSelect/NsSelect.vue';
|
|
13
|
+
export { default as NsCheckbox } from './components/NsCheckbox/NsCheckbox.vue';
|
|
14
|
+
export type { NsCheckboxProps } from './components/NsCheckbox/NsCheckbox.vue';
|
|
15
|
+
export { default as NsToggle } from './components/NsToggle/NsToggle.vue';
|
|
16
|
+
export type { NsToggleProps } from './components/NsToggle/NsToggle.vue';
|
|
17
|
+
export { default as NsForm } from './components/NsForm/NsForm.vue';
|
|
18
|
+
export type { NsFormProps } from './components/NsForm/NsForm.vue';
|
|
19
|
+
export { default as NsDialog } from './components/NsDialog/NsDialog.vue';
|
|
20
|
+
export type { NsDialogProps } from './components/NsDialog/NsDialog.vue';
|
|
21
|
+
export { default as NsBanner } from './components/NsBanner/NsBanner.vue';
|
|
22
|
+
export type { NsBannerProps, NsBannerType } from './components/NsBanner/NsBanner.vue';
|
|
23
|
+
export { default as NsAvatar } from './components/NsAvatar/NsAvatar.vue';
|
|
24
|
+
export type { NsAvatarProps, NsAvatarSize } from './components/NsAvatar/NsAvatar.vue';
|
|
25
|
+
export { default as NsChip } from './components/NsChip/NsChip.vue';
|
|
26
|
+
export type { NsChipProps } from './components/NsChip/NsChip.vue';
|
|
27
|
+
export { default as NsList } from './components/NsList/NsList.vue';
|
|
28
|
+
export type { NsListProps } from './components/NsList/NsList.vue';
|
|
29
|
+
export { default as NsTooltip } from './components/NsTooltip/NsTooltip.vue';
|
|
30
|
+
export type { NsTooltipProps, NsTooltipAnchor } from './components/NsTooltip/NsTooltip.vue';
|
|
31
|
+
export { default as NsBadge } from './components/NsBadge/NsBadge.vue';
|
|
32
|
+
export type { NsBadgeProps } from './components/NsBadge/NsBadge.vue';
|
|
33
|
+
export { default as NsBreadcrumbs } from './components/NsBreadcrumbs/NsBreadcrumbs.vue';
|
|
34
|
+
export type { NsBreadcrumbsProps } from './components/NsBreadcrumbs/NsBreadcrumbs.vue';
|
|
35
|
+
export { default as NsBreadcrumbElement } from './components/NsBreadcrumbElement/NsBreadcrumbElement.vue';
|
|
36
|
+
export type { NsBreadcrumbElementProps } from './components/NsBreadcrumbElement/NsBreadcrumbElement.vue';
|
|
37
|
+
export { default as NsButtonToggle } from './components/NsButtonToggle/NsButtonToggle.vue';
|
|
38
|
+
export type { NsButtonToggleProps } from './components/NsButtonToggle/NsButtonToggle.vue';
|
|
39
|
+
export { default as NsCardActions } from './components/NsCardActions/NsCardActions.vue';
|
|
40
|
+
export type { NsCardActionsProps } from './components/NsCardActions/NsCardActions.vue';
|
|
41
|
+
export { default as NsCardSection } from './components/NsCardSection/NsCardSection.vue';
|
|
42
|
+
export type { NsCardSectionProps } from './components/NsCardSection/NsCardSection.vue';
|
|
43
|
+
export { default as NsFooter } from './components/NsFooter/NsFooter.vue';
|
|
44
|
+
export type { NsFooterProps } from './components/NsFooter/NsFooter.vue';
|
|
45
|
+
export { default as NsHeader } from './components/NsHeader/NsHeader.vue';
|
|
46
|
+
export type { NsHeaderProps } from './components/NsHeader/NsHeader.vue';
|
|
47
|
+
export { default as NsIcon } from './components/NsIcon/NsIcon.vue';
|
|
48
|
+
export type { NsIconProps } from './components/NsIcon/NsIcon.vue';
|
|
49
|
+
export { default as NsImage } from './components/NsImage/NsImage.vue';
|
|
50
|
+
export type { NsImageProps } from './components/NsImage/NsImage.vue';
|
|
51
|
+
export { default as NsInnerLoading } from './components/NsInnerLoading/NsInnerLoading.vue';
|
|
52
|
+
export type { NsInnerLoadingProps } from './components/NsInnerLoading/NsInnerLoading.vue';
|
|
53
|
+
export { default as NsItem } from './components/NsItem/NsItem.vue';
|
|
54
|
+
export type { NsItemProps } from './components/NsItem/NsItem.vue';
|
|
55
|
+
export { default as NsItemLabel } from './components/NsItemLabel/NsItemLabel.vue';
|
|
56
|
+
export type { NsItemLabelProps } from './components/NsItemLabel/NsItemLabel.vue';
|
|
57
|
+
export { default as NsItemSection } from './components/NsItemSection/NsItemSection.vue';
|
|
58
|
+
export type { NsItemSectionProps } from './components/NsItemSection/NsItemSection.vue';
|
|
59
|
+
export { default as NsLayout } from './components/NsLayout/NsLayout.vue';
|
|
60
|
+
export type { NsLayoutProps } from './components/NsLayout/NsLayout.vue';
|
|
61
|
+
export { default as NsLinearProgress } from './components/NsLinearProgress/NsLinearProgress.vue';
|
|
62
|
+
export type { NsLinearProgressProps } from './components/NsLinearProgress/NsLinearProgress.vue';
|
|
63
|
+
export { default as NsMenu } from './components/NsMenu/NsMenu.vue';
|
|
64
|
+
export type { NsMenuProps } from './components/NsMenu/NsMenu.vue';
|
|
65
|
+
export { default as NsPage } from './components/NsPage/NsPage.vue';
|
|
66
|
+
export type { NsPageProps } from './components/NsPage/NsPage.vue';
|
|
67
|
+
export { default as NsPageContainer } from './components/NsPageContainer/NsPageContainer.vue';
|
|
68
|
+
export type { NsPageContainerProps } from './components/NsPageContainer/NsPageContainer.vue';
|
|
69
|
+
export { default as NsPagination } from './components/NsPagination/NsPagination.vue';
|
|
70
|
+
export type { NsPaginationProps } from './components/NsPagination/NsPagination.vue';
|
|
71
|
+
export { default as NsSeparator } from './components/NsSeparator/NsSeparator.vue';
|
|
72
|
+
export type { NsSeparatorProps } from './components/NsSeparator/NsSeparator.vue';
|
|
73
|
+
export { default as NsSpace } from './components/NsSpace/NsSpace.vue';
|
|
74
|
+
export type { NsSpaceProps } from './components/NsSpace/NsSpace.vue';
|
|
75
|
+
export { default as NsSpinner } from './components/NsSpinner/NsSpinner.vue';
|
|
76
|
+
export type { NsSpinnerProps } from './components/NsSpinner/NsSpinner.vue';
|
|
77
|
+
export { default as NsSpinnerDots } from './components/NsSpinnerDots/NsSpinnerDots.vue';
|
|
78
|
+
export type { NsSpinnerDotsProps } from './components/NsSpinnerDots/NsSpinnerDots.vue';
|
|
79
|
+
export { default as NsTab } from './components/NsTab/NsTab.vue';
|
|
80
|
+
export type { NsTabProps } from './components/NsTab/NsTab.vue';
|
|
81
|
+
export { default as NsTable } from './components/NsTable/NsTable.vue';
|
|
82
|
+
export type { NsTableProps } from './components/NsTable/NsTable.vue';
|
|
83
|
+
export { default as NsTableCell } from './components/NsTableCell/NsTableCell.vue';
|
|
84
|
+
export type { NsTableCellProps } from './components/NsTableCell/NsTableCell.vue';
|
|
85
|
+
export { default as NsTabPanel } from './components/NsTabPanel/NsTabPanel.vue';
|
|
86
|
+
export type { NsTabPanelProps } from './components/NsTabPanel/NsTabPanel.vue';
|
|
87
|
+
export { default as NsTabPanels } from './components/NsTabPanels/NsTabPanels.vue';
|
|
88
|
+
export type { NsTabPanelsProps } from './components/NsTabPanels/NsTabPanels.vue';
|
|
89
|
+
export { default as NsTabs } from './components/NsTabs/NsTabs.vue';
|
|
90
|
+
export type { NsTabsProps } from './components/NsTabs/NsTabs.vue';
|
|
91
|
+
export { default as NsTimeline } from './components/NsTimeline/NsTimeline.vue';
|
|
92
|
+
export type { NsTimelineProps } from './components/NsTimeline/NsTimeline.vue';
|
|
93
|
+
export { default as NsTimelineEntry } from './components/NsTimelineEntry/NsTimelineEntry.vue';
|
|
94
|
+
export type { NsTimelineEntryProps } from './components/NsTimelineEntry/NsTimelineEntry.vue';
|
|
95
|
+
export { default as NsToolbar } from './components/NsToolbar/NsToolbar.vue';
|
|
96
|
+
export type { NsToolbarProps } from './components/NsToolbar/NsToolbar.vue';
|
|
97
|
+
export { default as NsToolbarTitle } from './components/NsToolbarTitle/NsToolbarTitle.vue';
|
|
98
|
+
export type { NsToolbarTitleProps } from './components/NsToolbarTitle/NsToolbarTitle.vue';
|
|
99
|
+
export { createNonsuch } from './plugin';
|
|
100
|
+
export type { NsPluginOptions } from './plugin';
|
|
101
|
+
export { createQuasarConfig } from './quasarConfig';
|
|
102
|
+
export type { QuasarConfigOverrides, QuasarBrandColors } from './quasarConfig';
|
|
103
|
+
export type { NsLocaleMessages } from './locale/NsLocaleMessages';
|
|
104
|
+
export { nsLocaleEnCA } from './locale/en-CA';
|
|
105
|
+
export { nsLocaleFrCA } from './locale/fr-CA';
|
|
106
|
+
export { provideNsLocale, useNsLocale, NsLocaleKey } from './composables/useNsLocale';
|
|
107
|
+
export { useNsDefault } from './composables/useNsDefaults';
|
|
108
|
+
export { useNsDarkMode } from './composables/useNsDarkMode';
|
|
109
|
+
export type { UseNsDarkModeReturn } from './composables/useNsDarkMode';
|
|
110
|
+
export type { NsToken } from './tokens';
|
|
111
|
+
export { getToken } from './tokens';
|
|
112
|
+
export { nsComponentManifest, nsTemplateTagManifest, generateQuasarBanRules } from './manifest';
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NsLocaleMessages — typed interface for all Ns-specific strings.
|
|
3
|
+
*
|
|
4
|
+
* The library ships default locale objects (nsLocaleEnCA, nsLocaleFrCA).
|
|
5
|
+
* Consuming apps can merge this into their vue-i18n messages
|
|
6
|
+
* under a namespace like `$ns`, or provide translations via
|
|
7
|
+
* the `provideNsLocale()` helper.
|
|
8
|
+
*
|
|
9
|
+
* The library itself never imports or calls vue-i18n — it stays
|
|
10
|
+
* fully decoupled. Components resolve strings via:
|
|
11
|
+
* 1. Explicit prop (highest priority)
|
|
12
|
+
* 2. Injected NsLocaleMessages (via provideNsLocale)
|
|
13
|
+
* 3. Built-in English defaults (nsLocaleEnCA)
|
|
14
|
+
*
|
|
15
|
+
* Quasar-originated strings (e.g. "Close", "Clear") continue to
|
|
16
|
+
* use $q.lang.* and are NOT duplicated here.
|
|
17
|
+
*/
|
|
18
|
+
export interface NsLocaleMessages {
|
|
19
|
+
/** Common strings shared across components */
|
|
20
|
+
common: {
|
|
21
|
+
loading: string;
|
|
22
|
+
retry: string;
|
|
23
|
+
cancel: string;
|
|
24
|
+
confirm: string;
|
|
25
|
+
save: string;
|
|
26
|
+
delete: string;
|
|
27
|
+
edit: string;
|
|
28
|
+
search: string;
|
|
29
|
+
noResults: string;
|
|
30
|
+
showMore: string;
|
|
31
|
+
showLess: string;
|
|
32
|
+
};
|
|
33
|
+
/** Product-related strings (NsProductCard, etc.) */
|
|
34
|
+
product: {
|
|
35
|
+
addToCart: string;
|
|
36
|
+
outOfStock: string;
|
|
37
|
+
inStock: string;
|
|
38
|
+
quantity: string;
|
|
39
|
+
price: string;
|
|
40
|
+
sale: string;
|
|
41
|
+
};
|
|
42
|
+
/** Media/image viewer strings */
|
|
43
|
+
media: {
|
|
44
|
+
zoomIn: string;
|
|
45
|
+
zoomOut: string;
|
|
46
|
+
fullscreen: string;
|
|
47
|
+
exitFullscreen: string;
|
|
48
|
+
previousImage: string;
|
|
49
|
+
nextImage: string;
|
|
50
|
+
};
|
|
51
|
+
/** Form validation messages */
|
|
52
|
+
validation: {
|
|
53
|
+
required: string;
|
|
54
|
+
invalidEmail: string;
|
|
55
|
+
tooShort: string;
|
|
56
|
+
tooLong: string;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { NsLocaleMessages } from './NsLocaleMessages';
|
|
2
|
+
/**
|
|
3
|
+
* English (Canada) locale for Ns-specific strings.
|
|
4
|
+
*
|
|
5
|
+
* This is the built-in fallback — components use these values
|
|
6
|
+
* when no locale is provided via provideNsLocale().
|
|
7
|
+
*/
|
|
8
|
+
export declare const nsLocaleEnCA: NsLocaleMessages;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Component manifest — maps Quasar component names to their Nonsuch equivalents.
|
|
3
|
+
*
|
|
4
|
+
* Consuming apps can use this manifest to:
|
|
5
|
+
* 1. Generate ESLint rules that ban raw Quasar usage when an Ns wrapper exists
|
|
6
|
+
* 2. Run CI checks to detect drift between the app and the library
|
|
7
|
+
* 3. Power migration codemods
|
|
8
|
+
*/
|
|
9
|
+
export declare const nsComponentManifest: Record<string, string>;
|
|
10
|
+
/**
|
|
11
|
+
* Quasar kebab-case tag → Ns kebab-case tag.
|
|
12
|
+
* Useful for template-level ESLint rules (vue/no-restricted-html-elements).
|
|
13
|
+
*/
|
|
14
|
+
export declare const nsTemplateTagManifest: Record<string, string>;
|
|
15
|
+
/**
|
|
16
|
+
* Generate an ESLint `vue/no-restricted-html-elements` rule config
|
|
17
|
+
* that bans raw Quasar tags when an Ns wrapper exists.
|
|
18
|
+
*
|
|
19
|
+
* Usage in consuming app's eslint.config.js:
|
|
20
|
+
* import { generateQuasarBanRules } from '@nonsuch/components/manifest'
|
|
21
|
+
* rules: { 'vue/no-restricted-html-elements': ['error', ...generateQuasarBanRules()] }
|
|
22
|
+
*/
|
|
23
|
+
export declare function generateQuasarBanRules(): Array<{
|
|
24
|
+
element: string;
|
|
25
|
+
message: string;
|
|
26
|
+
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ns-button[data-v-
|
|
1
|
+
.ns-button[data-v-59b40e5f]{font-family:var(--ns-font-family-text);font-weight:var(--ns-font-weight-medium);letter-spacing:var(--ns-letter-spacing-wide)}.ns-skeleton[data-v-dfd40b8a]{border-radius:var(--ns-radius-md)}.ns-input[data-v-7ebf3284],.ns-input[data-v-7ebf3284] .q-field__label{font-family:var(--ns-font-family-text)}.ns-input[data-v-7ebf3284] .q-field__control{border-radius:var(--ns-radius-md)}.ns-card[data-v-7769879a]{border-radius:var(--ns-radius-lg);box-shadow:var(--ns-shadow-sm);font-family:var(--ns-font-family-text);transition:box-shadow var(--ns-duration-normal) var(--ns-easing-default)}.ns-card[data-v-7769879a]:hover{box-shadow:var(--ns-shadow-md)}.ns-card--flat[data-v-7769879a],.ns-card--flat[data-v-7769879a]:hover{box-shadow:none}.ns-card__header[data-v-7769879a]{font-family:var(--ns-font-family-display)}.ns-select[data-v-081cebe3],.ns-select[data-v-081cebe3] .q-field__label{font-family:var(--ns-font-family-text)}.ns-select[data-v-081cebe3] .q-field__control{border-radius:var(--ns-radius-md)}.ns-checkbox[data-v-2e481f8b],.ns-toggle[data-v-f8c90530],.ns-form[data-v-e20d14ce]{font-family:var(--ns-font-family-text)}.ns-dialog__card[data-v-4fca48ca]{border-radius:var(--ns-radius-lg);font-family:var(--ns-font-family-text);min-width:320px}.ns-dialog__header[data-v-4fca48ca]{font-family:var(--ns-font-family-display)}.ns-banner[data-v-18ebd6f5]{font-family:var(--ns-font-family-text);border-radius:var(--ns-radius-md)}.ns-banner--info[data-v-18ebd6f5]{background-color:var(--ns-color-info-bg, #e3f2fd);color:var(--ns-color-info-text, #0d47a1)}.ns-banner--success[data-v-18ebd6f5]{background-color:var(--ns-color-success-bg, #e8f5e9);color:var(--ns-color-success-text, #1b5e20)}.ns-banner--warning[data-v-18ebd6f5]{background-color:var(--ns-color-warning-bg, #fff3e0);color:var(--ns-color-warning-text, #e65100)}.ns-banner--error[data-v-18ebd6f5]{background-color:var(--ns-color-error-bg, #ffebee);color:var(--ns-color-error-text, #b71c1c)}.ns-avatar[data-v-6a1b44b8]{font-family:var(--ns-font-family-text);font-weight:var(--ns-font-weight-medium)}.ns-chip[data-v-1a2191f1]{font-family:var(--ns-font-family-text);border-radius:var(--ns-radius-full, 9999px)}.ns-list[data-v-65aec20e]{font-family:var(--ns-font-family-text);border-radius:var(--ns-radius-md)}.ns-tooltip[data-v-9cb6af8f]{font-family:var(--ns-font-family-text);font-size:var(--ns-font-size-sm, .875rem);border-radius:var(--ns-radius-sm);padding:var(--ns-space-1, 4px) var(--ns-space-2, 8px)}.ns-badge[data-v-4ca05f24],.ns-breadcrumbs[data-v-dee98f71],.ns-breadcrumb-element[data-v-37bfe51b],.ns-button-toggle[data-v-93652c3e],.ns-card-actions[data-v-0d6f776d],.ns-card-section[data-v-781d42ef],.ns-footer[data-v-1fb919cd],.ns-header[data-v-80d27841],.ns-icon[data-v-d068ec18],.ns-image[data-v-c9c9f6c1],.ns-inner-loading[data-v-080672c1],.ns-item[data-v-47978f87],.ns-item-label[data-v-df6024af],.ns-item-section[data-v-340a753a],.ns-layout[data-v-cf90e270],.ns-linear-progress[data-v-79c6443f],.ns-menu[data-v-47a4b7d0],.ns-page[data-v-25e2841e],.ns-page-container[data-v-ac167da5],.ns-pagination[data-v-12fa9287],.ns-separator[data-v-0c2b2ac1],.ns-space[data-v-273ca5fc],.ns-spinner[data-v-5b99a17b],.ns-spinner-dots[data-v-20a70106],.ns-tab[data-v-b97f2cd1],.ns-table[data-v-a45d30cf],.ns-table-cell[data-v-ca0da61b],.ns-tab-panel[data-v-d8f64358],.ns-tab-panels[data-v-dec8ab0f],.ns-tabs[data-v-81224e01],.ns-timeline[data-v-1bf558aa],.ns-timeline-entry[data-v-fa149ea0],.ns-toolbar[data-v-e26a45db],.ns-toolbar-title[data-v-42928844]{font-family:var(--ns-font-family-text)}
|