@douglasneuroinformatics/libui 1.1.0 → 1.3.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/i18n.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/i18n.ts"],"sourcesContent":["import { type i18n as I18n, createInstance } from 'i18next';\nimport { initReactI18next } from 'react-i18next';\n\nconst defaultNS = 'translations';\n\nconst resources = {\n en: {\n translations: {\n 'datetime.days': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n 'datetime.months': [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n 'form.append': 'Append',\n 'form.errors.required': 'This field is required',\n 'form.errors.unknown': 'Unknown error',\n 'form.radio.labels.false': 'False',\n 'form.radio.labels.true': 'True',\n 'form.remove': 'Remove',\n 'form.reset': 'Clear',\n 'form.submit': 'Submit',\n 'notifications.types.error': 'Error',\n 'notifications.types.info': 'Info',\n 'notifications.types.success': 'Success',\n 'notifications.types.warning': 'Warning',\n 'searchBar.placeholder': 'Search...',\n 'table.pagination.info': 'Showing {{first}} to {{last}} of {{total}} results',\n 'table.pagination.next': 'Next',\n 'table.pagination.previous': 'Previous'\n }\n },\n fr: {\n translations: {\n 'datetime.days': ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],\n 'datetime.months': [\n 'Janvier',\n 'Février',\n 'Mars',\n 'Avril',\n 'Mai',\n 'Juin',\n 'Juillet',\n 'Août',\n 'Septembre',\n 'Octobre',\n 'Novembre',\n 'Décembre'\n ],\n 'form.append': 'Ajouter',\n 'form.errors.required': 'Ce champ est obligatoire',\n 'form.errors.unknown': 'Erreur inconnue',\n 'form.radio.labels.false': 'Faux',\n 'form.radio.labels.true': 'Vrai',\n 'form.remove': 'Supprimer',\n 'form.reset': 'Réinitialiser',\n 'form.submit': 'Soumettre',\n 'notifications.types.error': 'Erreur',\n 'notifications.types.info': 'Attention',\n 'notifications.types.success': 'Succès',\n 'notifications.types.warning': 'Avertissement',\n 'searchBar.placeholder': 'Rechercher...',\n 'table.pagination.info': 'Affichage de {{first}} à {{last}} sur {{total}} résultats',\n 'table.pagination.next': 'Suivante',\n 'table.pagination.previous': 'Précédente'\n }\n }\n} as const;\n\nconst i18n = createInstance({\n defaultNS,\n fallbackLng: 'en',\n interpolation: {\n escapeValue: false\n },\n resources,\n returnObjects: true,\n supportedLngs: ['en', 'fr']\n}) as I18n;\n\nvoid i18n.use(initReactI18next).init();\n\nexport { defaultNS, resources };\n\nexport default i18n;\n"],"mappings":";AAAA,SAA4B,sBAAsB;AAClD,SAAS,wBAAwB;AAEjC,IAAM,YAAY;AAElB,IAAM,YAAY;AAAA,EAChB,IAAI;AAAA,IACF,cAAc;AAAA,MACZ,iBAAiB,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAU;AAAA,MAC9F,mBAAmB;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,eAAe;AAAA,MACf,wBAAwB;AAAA,MACxB,uBAAuB;AAAA,MACvB,2BAA2B;AAAA,MAC3B,0BAA0B;AAAA,MAC1B,eAAe;AAAA,MACf,cAAc;AAAA,MACd,eAAe;AAAA,MACf,6BAA6B;AAAA,MAC7B,4BAA4B;AAAA,MAC5B,+BAA+B;AAAA,MAC/B,+BAA+B;AAAA,MAC/B,yBAAyB;AAAA,MACzB,yBAAyB;AAAA,MACzB,yBAAyB;AAAA,MACzB,6BAA6B;AAAA,IAC/B;AAAA,EACF;AAAA,EACA,IAAI;AAAA,IACF,cAAc;AAAA,MACZ,iBAAiB,CAAC,YAAY,SAAS,SAAS,YAAY,SAAS,YAAY,QAAQ;AAAA,MACzF,mBAAmB;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,eAAe;AAAA,MACf,wBAAwB;AAAA,MACxB,uBAAuB;AAAA,MACvB,2BAA2B;AAAA,MAC3B,0BAA0B;AAAA,MAC1B,eAAe;AAAA,MACf,cAAc;AAAA,MACd,eAAe;AAAA,MACf,6BAA6B;AAAA,MAC7B,4BAA4B;AAAA,MAC5B,+BAA+B;AAAA,MAC/B,+BAA+B;AAAA,MAC/B,yBAAyB;AAAA,MACzB,yBAAyB;AAAA,MACzB,yBAAyB;AAAA,MACzB,6BAA6B;AAAA,IAC/B;AAAA,EACF;AACF;AAEA,IAAM,OAAO,eAAe;AAAA,EAC1B;AAAA,EACA,aAAa;AAAA,EACb,eAAe;AAAA,IACb,aAAa;AAAA,EACf;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,eAAe,CAAC,MAAM,IAAI;AAC5B,CAAC;AAED,KAAK,KAAK,IAAI,gBAAgB,EAAE,KAAK;AAIrC,IAAO,eAAQ;","names":[]}
1
+ {"version":3,"sources":["../src/i18n.ts","../src/translations/libui.json"],"sourcesContent":["import { type i18n as I18n, createInstance } from 'i18next';\nimport { mapValues } from 'lodash-es';\nimport { initReactI18next } from 'react-i18next';\nimport type { EmptyObject, ValueOf } from 'type-fest';\n\nimport libui from './translations/libui.json';\n\nconst defaultNS = 'libui' as const;\nconst supportedLngs = ['en', 'fr'] as const;\n\ntype DefaultNS = typeof defaultNS;\ntype Language = (typeof supportedLngs)[number];\n\ntype TranslationsDef = Record<string, Record<string, unknown>>;\n\ntype TranslatedResource<T = EmptyObject> = {\n [K in keyof T]: T[K] extends Record<string, unknown>\n ? T[K] extends Record<Language, unknown>\n ? ValueOf<T[K]>\n : TranslatedResource<T[K]>\n : T[K];\n};\n\nfunction transformTranslations<T extends Record<string, any>>(translations: T, locale: string) {\n const isPlainObject = Object.getPrototypeOf(translations) === Object.prototype;\n if (!isPlainObject) {\n throw new Error('Invalid format of translations: must be plain object');\n }\n const result: Record<string, unknown> = {};\n for (const key in translations) {\n const value = translations[key];\n if (Object.hasOwn(value, locale)) {\n result[key] = value[locale as keyof typeof value];\n } else {\n result[key] = transformTranslations(value, locale);\n }\n }\n return result;\n}\n\nfunction createResourcesForLanguage<T extends TranslationsDef>(translations: T, locale: Language) {\n return mapValues(translations, (value) => transformTranslations(value, locale));\n}\n\nfunction createResources<T extends TranslationsDef>(translations: T) {\n return {\n en: createResourcesForLanguage(translations, 'en'),\n fr: createResourcesForLanguage(translations, 'fr')\n } as TranslatedResource<T>;\n}\n\nconst resources = createResources({ libui });\n\nconst i18n = createInstance({\n defaultNS,\n fallbackLng: 'en' satisfies Language,\n interpolation: {\n escapeValue: false\n },\n lng: 'en' satisfies Language,\n resources,\n returnObjects: true,\n supportedLngs\n}) as I18n;\n\nawait i18n.use(initReactI18next).init();\n\nexport default i18n;\n\nexport type { DefaultNS, Language, TranslatedResource };\n","{\n \"days\": {\n \"monday\": {\n \"en\": \"Monday\",\n \"fr\": \"Lundi\"\n },\n \"tuesday\": {\n \"en\": \"Tuesday\",\n \"fr\": \"Mardi\"\n },\n \"wednesday\": {\n \"en\": \"Wednesday\",\n \"fr\": \"Mercredi\"\n },\n \"thursday\": {\n \"en\": \"Thursday\",\n \"fr\": \"Jeudi\"\n },\n \"friday\": {\n \"en\": \"Friday\",\n \"fr\": \"Vendredi\"\n },\n \"saturday\": {\n \"en\": \"Saturday\",\n \"fr\": \"Samedi\"\n },\n \"sunday\": {\n \"en\": \"Sunday\",\n \"fr\": \"Dimanche\"\n }\n },\n \"months\": {\n \"january\": {\n \"en\": \"January\",\n \"fr\": \"Janvier\"\n },\n \"february\": {\n \"en\": \"February\",\n \"fr\": \"Février\"\n },\n \"march\": {\n \"en\": \"March\",\n \"fr\": \"Mars\"\n },\n \"april\": {\n \"en\": \"April\",\n \"fr\": \"Avril\"\n },\n \"may\": {\n \"en\": \"May\",\n \"fr\": \"Mai\"\n },\n \"june\": {\n \"en\": \"June\",\n \"fr\": \"Juin\"\n },\n \"july\": {\n \"en\": \"July\",\n \"fr\": \"Juillet\"\n },\n \"august\": {\n \"en\": \"August\",\n \"fr\": \"Août\"\n },\n \"september\": {\n \"en\": \"September\",\n \"fr\": \"Septembre\"\n },\n \"october\": {\n \"en\": \"October\",\n \"fr\": \"Octobre\"\n },\n \"november\": {\n \"en\": \"November\",\n \"fr\": \"Novembre\"\n },\n \"december\": {\n \"en\": \"December\",\n \"fr\": \"Décembre\"\n }\n }\n}\n"],"mappings":"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","names":[]}
package/dist/utils.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { ClassValue } from 'clsx';
2
2
 
3
3
  declare function cn(...inputs: ClassValue[]): string;
4
+ declare function isBrowser(): boolean;
4
5
 
5
- export { cn };
6
+ export { cn, isBrowser };
package/dist/utils.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import {
2
- cn
3
- } from "./chunk-57KC6SAE.js";
2
+ cn,
3
+ isBrowser
4
+ } from "./chunk-PAAJ5AH3.js";
4
5
  export {
5
- cn
6
+ cn,
7
+ isBrowser
6
8
  };
7
9
  //# sourceMappingURL=utils.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@douglasneuroinformatics/libui",
3
3
  "type": "module",
4
- "version": "1.1.0",
4
+ "version": "1.3.0",
5
5
  "packageManager": "pnpm@8.15.3",
6
6
  "description": "Generic UI components for DNP projects, built using React and TailwindCSS",
7
7
  "author": {
@@ -9,6 +9,14 @@
9
9
  "email": "support@douglasneuroinformatics.ca"
10
10
  },
11
11
  "license": "LGPL-3.0",
12
+ "homepage": "https://github.com/DouglasNeuroInformatics/libui/#readme",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/DouglasNeuroInformatics/libui/.git"
16
+ },
17
+ "bugs": {
18
+ "url": "https://github.com/DouglasNeuroInformatics/libui/issues"
19
+ },
12
20
  "keywords": [
13
21
  "React",
14
22
  "TailwindCSS"
@@ -44,8 +52,10 @@
44
52
  "format": "prettier --write src",
45
53
  "lint": "tsc && eslint --fix src",
46
54
  "prepare": "husky",
47
- "storybook": "storybook dev -p 6006",
48
- "storybook:build": "storybook build"
55
+ "storybook": "storybook dev --no-open -p 6006",
56
+ "storybook:build": "storybook build",
57
+ "test": "vitest",
58
+ "test:coverage": "vitest --coverage"
49
59
  },
50
60
  "peerDependencies": {
51
61
  "react": "^18.2.0",
@@ -53,61 +63,76 @@
53
63
  "tailwindcss": "^3.3.5"
54
64
  },
55
65
  "dependencies": {
66
+ "@douglasneuroinformatics/libui-form-types": "^0.0.1",
56
67
  "@radix-ui/react-accordion": "^1.1.2",
68
+ "@radix-ui/react-avatar": "^1.0.4",
69
+ "@radix-ui/react-checkbox": "^1.0.4",
57
70
  "@radix-ui/react-icons": "^1.3.0",
58
71
  "@radix-ui/react-label": "^2.0.2",
72
+ "@radix-ui/react-popover": "^1.0.7",
73
+ "@radix-ui/react-radio-group": "^1.1.3",
74
+ "@radix-ui/react-scroll-area": "^1.0.5",
75
+ "@radix-ui/react-select": "^2.0.0",
76
+ "@radix-ui/react-separator": "^1.0.3",
59
77
  "@radix-ui/react-slot": "^1.0.2",
78
+ "@radix-ui/react-switch": "^1.0.3",
79
+ "@radix-ui/react-tabs": "^1.0.4",
80
+ "@radix-ui/react-tooltip": "^1.0.7",
60
81
  "class-variance-authority": "^0.7.0",
61
82
  "clsx": "^2.1.0",
83
+ "framer-motion": "^11.0.13",
62
84
  "i18next": "23.x",
63
85
  "i18next-browser-languagedetector": "^7.2.0",
64
86
  "lodash-es": "^4.17.21",
65
87
  "react-i18next": "^14.1.0",
66
- "tailwind-merge": "^1.14.0",
88
+ "tailwind-merge": "^2.2.1",
67
89
  "tailwindcss-animate": "^1.0.7",
68
- "type-fest": "^4.11.1",
90
+ "ts-pattern": "^5.0.8",
91
+ "type-fest": "^4.12.0",
92
+ "zod": "^3.22.4",
69
93
  "zustand": "^4.5.2"
70
94
  },
71
95
  "devDependencies": {
72
96
  "@commitlint/cli": "^19.1.0",
73
97
  "@commitlint/config-conventional": "^19.1.0",
74
98
  "@commitlint/types": "^19.0.3",
75
- "@douglasneuroinformatics/eslint-config": "^4.0.1",
99
+ "@douglasneuroinformatics/eslint-config": "^4.1.1",
76
100
  "@semantic-release/changelog": "^6.0.3",
77
101
  "@semantic-release/git": "^10.0.1",
78
102
  "@semantic-release/npm": "^11.0.3",
79
- "@storybook/addon-essentials": "^7.6.17",
80
- "@storybook/addon-interactions": "^7.6.17",
81
- "@storybook/addon-links": "^7.6.17",
82
- "@storybook/addon-themes": "^7.6.17",
83
- "@storybook/blocks": "^7.6.17",
84
- "@storybook/icons": "^1.2.8",
85
- "@storybook/manager-api": "^7.6.17",
86
- "@storybook/react": "^7.6.17",
87
- "@storybook/react-vite": "^7.6.17",
88
- "@storybook/theming": "^7.6.17",
103
+ "@storybook/addon-essentials": "^8.0.0",
104
+ "@storybook/addon-interactions": "^8.0.0",
105
+ "@storybook/addon-links": "^8.0.0",
106
+ "@storybook/addon-themes": "^8.0.0",
107
+ "@storybook/blocks": "^8.0.0",
108
+ "@storybook/icons": "^1.2.9",
109
+ "@storybook/manager-api": "^8.0.0",
110
+ "@storybook/react": "^8.0.0",
111
+ "@storybook/react-vite": "^8.0.0",
112
+ "@storybook/theming": "^8.0.0",
89
113
  "@testing-library/jest-dom": "^6.4.2",
90
114
  "@testing-library/react": "14.2.1",
91
115
  "@testing-library/user-event": "^14.5.2",
92
116
  "@types/lodash-es": "^4.17.12",
93
- "@types/node": "^20.11.25",
94
- "@types/react": "^18.2.64",
95
- "@types/react-dom": "^18.2.21",
117
+ "@types/node": "^20.11.27",
118
+ "@types/react": "^18.2.65",
119
+ "@types/react-dom": "^18.2.22",
96
120
  "@vitejs/plugin-react-swc": "^3.6.0",
97
121
  "@vitest/coverage-v8": "^1.3.1",
98
122
  "autoprefixer": "^10.4.18",
99
123
  "eslint": "^8.57.0",
124
+ "happy-dom": "^13.8.2",
100
125
  "husky": "^9.0.11",
101
126
  "jsdom": "24.0.0",
102
127
  "postcss": "^8.4.35",
103
128
  "prettier": "^3.2.5",
104
129
  "prettier-plugin-tailwindcss": "^0.5.12",
105
130
  "semantic-release": "^23.0.2",
106
- "storybook": "^7.6.17",
131
+ "storybook": "^8.0.0",
107
132
  "storybook-react-i18next": "^2.1.1",
108
133
  "tsup": "^8.0.2",
109
134
  "typescript": "~5.3.3",
110
- "vite": "4.4.9",
135
+ "vite": "5.1.6",
111
136
  "vitest": "^1.3.1"
112
137
  }
113
138
  }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":";AAAA,SAA0B,YAAY;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;","names":[]}