@hardwork-med/hwm-web-ds 0.1.0 → 0.1.2

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/index.d.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { IconDefinition } from '@fortawesome/fontawesome-svg-core';
3
3
  import { FontAwesomeIconProps } from '@fortawesome/react-fontawesome';
4
+ import * as zustand_middleware from 'zustand/middleware';
5
+ import * as zustand from 'zustand';
6
+ import { TProva } from '@/interfaces/TProva';
4
7
 
5
8
  interface IconProps extends FontAwesomeIconProps {
6
9
  /**
@@ -81,6 +84,20 @@ declare function QuestaoLayoutTags({ children }: {
81
84
  children?: React.ReactNode;
82
85
  }): react_jsx_runtime.JSX.Element;
83
86
 
87
+ interface QuestaoAlternativaProps {
88
+ position?: string
89
+ text: string
90
+ selected: boolean
91
+ correct: boolean
92
+ answered: boolean
93
+ showAnswer?: boolean
94
+ cancelled?: boolean
95
+ percentage?: string | number
96
+ onClick: React.MouseEventHandler<HTMLButtonElement>
97
+ }
98
+
99
+ declare function QuestaoAlternativa({ position, text, selected, correct, answered, showAnswer, cancelled, percentage, onClick }: QuestaoAlternativaProps): react_jsx_runtime.JSX.Element;
100
+
84
101
  declare function QuestaoLayoutMainContent({ children }: {
85
102
  children?: React.ReactNode;
86
103
  }): react_jsx_runtime.JSX.Element;
@@ -96,6 +113,7 @@ declare function QuestaoLayoutAlternativas({ children }: {
96
113
  */
97
114
  declare const Questao: {
98
115
  Tag: typeof QuestaoTag;
116
+ Alternativa: typeof QuestaoAlternativa;
99
117
  Layout: {
100
118
  Grid: typeof QuestaoLayoutGrid;
101
119
  MainContent: typeof QuestaoLayoutMainContent;
@@ -117,6 +135,32 @@ declare function useAppBreakpoint(): {
117
135
  size: number;
118
136
  };
119
137
 
138
+ interface WebDsState {
139
+ themeProva: TProva | null;
140
+ setThemeProva: (value: TProva | null) => void;
141
+ darkMode: boolean;
142
+ setDarkMode: (value: boolean) => void;
143
+ toggleDarkMode: () => void;
144
+ questionDarkMode: boolean;
145
+ setQuestionDarkMode: (value: boolean) => void;
146
+ toggleQuestionDarkMode: () => void;
147
+ questionGridOrientation: 'horizontal' | 'vertical';
148
+ toggleQuestionGridOrientation: () => void;
149
+ }
150
+ declare const useWebDsStore: zustand.UseBoundStore<Omit<zustand.StoreApi<WebDsState>, "setState" | "persist"> & {
151
+ setState(partial: WebDsState | Partial<WebDsState> | ((state: WebDsState) => WebDsState | Partial<WebDsState>), replace?: false | undefined): unknown;
152
+ setState(state: WebDsState | ((state: WebDsState) => WebDsState), replace: true): unknown;
153
+ persist: {
154
+ setOptions: (options: Partial<zustand_middleware.PersistOptions<WebDsState, WebDsState, unknown>>) => void;
155
+ clearStorage: () => void;
156
+ rehydrate: () => Promise<void> | void;
157
+ hasHydrated: () => boolean;
158
+ onHydrate: (fn: (state: WebDsState) => void) => () => void;
159
+ onFinishHydration: (fn: (state: WebDsState) => void) => () => void;
160
+ getOptions: () => Partial<zustand_middleware.PersistOptions<WebDsState, WebDsState, unknown>>;
161
+ };
162
+ }>;
163
+
120
164
  declare function formatPosition(position: string): string;
121
165
 
122
166
  declare function checkEnunciadoUnderline(enunciado: string): {
@@ -124,5 +168,5 @@ declare function checkEnunciadoUnderline(enunciado: string): {
124
168
  enunciado2: string;
125
169
  } | null;
126
170
 
127
- export { Icon, Questao, checkEnunciadoUnderline, formatPosition, useAppBreakpoint, useOutsideClick };
171
+ export { Icon, Questao, checkEnunciadoUnderline, formatPosition, useAppBreakpoint, useOutsideClick, useWebDsStore };
128
172
  export type { IconProps, TBreakpoint };
package/dist/index.esm.js CHANGED
@@ -3,6 +3,9 @@ import clsx from 'clsx';
3
3
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4
4
  import { useState, useEffect } from 'react';
5
5
  import { isBrowser } from 'framer-motion';
6
+ import { create } from 'zustand';
7
+ import { persist } from 'zustand/middleware';
8
+ import { byPrefixAndName } from '@awesome.me/kit-a7702856b7/icons';
6
9
 
7
10
  function styleInject(css, ref) {
8
11
  if ( ref === void 0 ) ref = {};
@@ -101,15 +104,81 @@ function useAppBreakpoint() {
101
104
  };
102
105
  }
103
106
 
107
+ const useWebDsStore = create()(persist((set) => ({
108
+ themeProva: null,
109
+ setThemeProva: (value) => set({ themeProva: value }),
110
+ darkMode: false,
111
+ setDarkMode: (value) => set({
112
+ questionDarkMode: value,
113
+ darkMode: value
114
+ }),
115
+ toggleDarkMode: () => set((state) => {
116
+ const newValue = !state.darkMode;
117
+ return {
118
+ questionDarkMode: newValue,
119
+ darkMode: newValue
120
+ };
121
+ }),
122
+ questionDarkMode: false,
123
+ setQuestionDarkMode: (value) => set({ questionDarkMode: value }),
124
+ toggleQuestionDarkMode: () => set((state) => ({ questionDarkMode: !state.questionDarkMode })),
125
+ questionGridOrientation: 'horizontal',
126
+ toggleQuestionGridOrientation: () => set((state) => ({
127
+ questionGridOrientation: state.questionGridOrientation === 'horizontal' ? 'vertical' : 'horizontal'
128
+ }))
129
+ }), {
130
+ name: 'hwm-web-ds',
131
+ }));
132
+
104
133
  function QuestaoLayoutGrid({ children }) {
134
+ const { questionGridOrientation } = useWebDsStore();
105
135
  const { lg } = useAppBreakpoint();
106
- return (jsx(Fragment, { children: jsx("div", { className: clsx('flex gap-10 w-full max-w-7xl mx-auto', (lg) ? 'flex-row' : 'flex-col'), children: children }) }));
136
+ return (jsx(Fragment, { children: jsx("div", { className: clsx('flex gap-10 w-full max-w-7xl mx-auto', (lg && questionGridOrientation === 'horizontal') ? 'flex-row' : 'flex-col'), children: children }) }));
107
137
  }
108
138
 
109
139
  function QuestaoLayoutTags({ children }) {
110
140
  return (jsx(Fragment, { children: jsx("div", { className: clsx('flex flex-row gap-4 w-full'), children: children }) }));
111
141
  }
112
142
 
143
+ function formatPosition(position) {
144
+ if (/[a-zA-Z]/.test(position)) {
145
+ return position.toUpperCase();
146
+ }
147
+ const numeric = Number(position);
148
+ if (Number.isNaN(numeric) || numeric <= 0) {
149
+ return position;
150
+ }
151
+ const charCode = 64 + numeric;
152
+ if (charCode < 65 || charCode > 90) {
153
+ return position;
154
+ }
155
+ return String.fromCharCode(charCode);
156
+ }
157
+
158
+ function QuestaoAlternativa({ position, text, selected, correct, answered, showAnswer = false, cancelled = false, percentage, onClick }) {
159
+ const { questionDarkMode } = useWebDsStore();
160
+ const CHECK_DISABLED = answered || cancelled;
161
+ const CHECK_NOT_ANSWERED = (!showAnswer && answered) || !answered;
162
+ const CHECK_ANSWERED = showAnswer && answered;
163
+ const SHOW_ANSWER_ICON = CHECK_ANSWERED && (correct || (!correct && selected));
164
+ return (jsx(Fragment, { children: jsxs("button", { className: clsx('tw:relative', 'tw:flex tw:items-center tw:gap-4 tw:w-full tw:min-h-14 tw:px-4 tw:py-3 tw:rounded-lg tw:transition-colors', 'tw:text-sm tw:whitespace-pre-wrap', 'tw:transition-colors', !CHECK_DISABLED && 'tw:default-click-animation', CHECK_NOT_ANSWERED && {
165
+ 'tw:bg-cinza-1000 tw:hover:tw:bg-cinza-900 tw:text-cinza-100': !selected && questionDarkMode,
166
+ 'tw:bg-cinza-500 tw:text-cinza-1000': selected && questionDarkMode,
167
+ 'tw:bg-secundario-85 tw:hover:tw:bg-secundario-95 tw:text-primario-20': !selected && !questionDarkMode,
168
+ 'tw:bg-primario-20 tw:text-primario-80': selected && !questionDarkMode
169
+ }, CHECK_ANSWERED && {
170
+ 'tw:border tw:border-certo tw:text-certo': correct,
171
+ 'tw:border tw:border-errado tw:text-errado': !correct && selected,
172
+ 'tw:opacity-50': !correct && !selected,
173
+ 'tw:bg-cinza-1100': ((!correct && selected) || correct) && questionDarkMode,
174
+ 'tw:bg-cinza-1000 tw:text-cinza-900': (!correct && !selected) && questionDarkMode,
175
+ 'tw:bg-secundario-95': ((!correct && selected) || correct) && !questionDarkMode,
176
+ 'tw:bg-secundario-85 tw:text-cinza-1000': (!correct && !selected) && !questionDarkMode
177
+ }), disabled: CHECK_DISABLED, onClick: onClick, children: [!!position && (jsx("p", { className: clsx('tw:transition-colors', 'tw:font-bold tw:text-2xl tw:leading-full'), children: formatPosition(position) })), jsx("p", { className: clsx('tw:w-full tw:transition-colors', 'tw:text-left tw:whitespace-pre-wrap', cancelled && 'tw:line-through tw:decoration-2', CHECK_ANSWERED && {
178
+ 'tw:font-bold': (!correct && selected) || correct
179
+ }), children: text }), (CHECK_ANSWERED && percentage !== undefined) && (jsxs("p", { className: clsx('tw:transition-colors', 'tw:font-bold tw:text-sm tw:leading-full'), children: [`${percentage}`.padStart(2, '0'), "%"] })), SHOW_ANSWER_ICON && (jsx("div", { className: clsx('tw:absolute tw:-top-1.5 tw:-right-1.5', 'tw:flex tw:items-center tw:justify-center tw:size-5 tw:rounded-full tw:bg-secundario-95 tw:transition-colors'), children: jsx(Icon, { icon: byPrefixAndName.fas[correct ? 'circle-check' : 'circle-xmark'], fontSize: 20, className: clsx(correct ? 'tw:text-certo' : 'tw:text-errado') }) }))] }) }));
180
+ }
181
+
113
182
  function QuestaoLayoutMainContent({ children }) {
114
183
  return (jsx(Fragment, { children: jsx("div", { className: clsx('flex flex-col w-full'), children: children }) }));
115
184
  }
@@ -125,6 +194,7 @@ function QuestaoLayoutAlternativas({ children }) {
125
194
  */
126
195
  const Questao = {
127
196
  Tag: QuestaoTag,
197
+ Alternativa: QuestaoAlternativa,
128
198
  Layout: {
129
199
  Grid: QuestaoLayoutGrid,
130
200
  MainContent: QuestaoLayoutMainContent,
@@ -150,21 +220,6 @@ function useOutsideClick(ref, callback, excludeIds = []) {
150
220
  }, [ref, callback]);
151
221
  }
152
222
 
153
- function formatPosition(position) {
154
- if (/[a-zA-Z]/.test(position)) {
155
- return position.toUpperCase();
156
- }
157
- const numeric = Number(position);
158
- if (Number.isNaN(numeric) || numeric <= 0) {
159
- return position;
160
- }
161
- const charCode = 64 + numeric;
162
- if (charCode < 65 || charCode > 90) {
163
- return position;
164
- }
165
- return String.fromCharCode(charCode);
166
- }
167
-
168
223
  function checkEnunciadoUnderline(enunciado) {
169
224
  const regex = /_+/;
170
225
  const checkEspaco = regex.test(enunciado);
@@ -174,5 +229,5 @@ function checkEnunciadoUnderline(enunciado) {
174
229
  return { enunciado1, enunciado2 };
175
230
  }
176
231
 
177
- export { Icon, Questao, checkEnunciadoUnderline, formatPosition, useAppBreakpoint, useOutsideClick };
232
+ export { Icon, Questao, checkEnunciadoUnderline, formatPosition, useAppBreakpoint, useOutsideClick, useWebDsStore };
178
233
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/common/Icon/Icon.tsx","../src/modules/questao/components/common/Tag/Tag.tsx","../src/hooks/useAppBreakpoint/index.ts","../src/modules/questao/components/layout/Grid/index.tsx","../src/modules/questao/components/layout/Tags/index.tsx","../src/modules/questao/components/layout/MainContent/index.tsx","../src/modules/questao/components/layout/Alternativas/index.tsx","../src/modules/questao/index.ts","../src/hooks/useOutsideClick/index.ts","../src/utils/formatPosition/index.ts","../src/utils/checkEnunciadoUnderline/index.ts"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import clsx from 'clsx'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport type { IconProps } from './Icon.types'\n\nexport default function Icon({\n fontSize = 14,\n duotone = false,\n duotoneColor,\n primaryOpacity = 1,\n secondaryOpacity = 0.4,\n ...props\n}: IconProps) {\n\n const styles = {\n ...props.style,\n ...(duotone && {\n ['--fa-primary-color' as any]: !!duotoneColor ? duotoneColor[0] : undefined,\n ['--fa-secondary-color' as any]: !!duotoneColor && duotoneColor[1] ? duotoneColor[1] : undefined,\n ['--fa-primary-opacity' as any]: primaryOpacity,\n ['--fa-secondary-opacity' as any]: secondaryOpacity\n })\n }\n\n return (\n <FontAwesomeIcon\n {...props}\n fontSize={fontSize}\n style={styles}\n className={clsx(\n props.className,\n 'tw:transition-colors'\n )}\n />\n )\n}\n","import clsx from 'clsx'\nimport Icon from '@/components/common/Icon'\nimport type { QuestaoTagProps } from './Tag.types'\n\nexport default function QuestaoTag({ icon, label, status }: QuestaoTagProps) {\n\n return(\n\n <>\n <div className={clsx('tw:flex tw:items-center tw:gap-1 tw:h-7 tw:px-2')}>\n <Icon\n icon={icon}\n fontSize={12}\n className={clsx(\n status === 'certo' && 'tw:text-certo',\n status === 'errado' && 'tw:text-errado',\n status === 'parcial' && 'tw:text-parcial',\n !status && 'tw:text-primario-20'\n )}\n />\n\n {!!label && (\n <p\n className={clsx(\n 'tw:transition-colors',\n 'tw:text-xs tw:leading-full',\n status === 'certo' && 'tw:text-certo',\n status === 'errado' && 'tw:text-errado',\n status === 'parcial' && 'tw:text-parcial',\n !status && 'tw:text-primario-20'\n )}\n >\n {label}\n </p>\n )}\n </div>\n </>\n\n )\n\n}\n","import { useEffect, useState } from 'react'\nimport { isBrowser } from 'framer-motion'\n\nexport type TBreakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport default function useAppBreakpoint() {\n const [size, setSize] = useState(0)\n const [breakpoint, setBreakpoint] = useState<TBreakpoint>('sm')\n const [breakpoints, setBreakpoints] = useState({\n xl: false,\n lg: false,\n md: false,\n sm: false,\n xs: true\n })\n\n const getBreakpoint = (width: number): TBreakpoint => {\n if (width >= 1280) return 'xl'\n if (width >= 1024) return 'lg'\n if (width >= 768) return 'md'\n if (width >= 640) return 'sm'\n return 'xs'\n }\n\n const updateBreakpoints = (width: number) => {\n setBreakpoints({\n xl: width >= 1280,\n lg: width >= 1024,\n md: width >= 768,\n sm: width >= 640,\n xs: width > 0\n })\n }\n\n useEffect(() => {\n if (!isBrowser) return\n\n const handleResize = () => {\n const width = window.innerWidth\n\n setSize(width)\n setBreakpoint(getBreakpoint(width))\n updateBreakpoints(width)\n }\n\n handleResize()\n\n window.addEventListener('resize', handleResize)\n\n return () => window.removeEventListener('resize', handleResize)\n }, [])\n\n return {\n breakpoint,\n size,\n ...breakpoints\n }\n}\n","import clsx from 'clsx'\nimport useAppBreakpoint from '@/hooks/useAppBreakpoint'\n\nexport default function QuestaoLayoutGrid({ children }: { children?: React.ReactNode }) {\n\n const { lg } = useAppBreakpoint()\n\n return(\n\n <>\n <div\n className={clsx(\n 'flex gap-10 w-full max-w-7xl mx-auto',\n (lg) ? 'flex-row' : 'flex-col'\n )}\n >\n {children}\n </div>\n </>\n\n )\n\n}\n","import clsx from 'clsx'\n\nexport default function QuestaoLayoutTags({ children }: { children?: React.ReactNode }) {\n\n return(\n\n <>\n <div className={clsx('flex flex-row gap-4 w-full')}>\n {children}\n </div>\n </>\n\n )\n\n}\n","import clsx from 'clsx'\n\nexport default function QuestaoLayoutMainContent({ children }: { children?: React.ReactNode }) {\n\n return(\n\n <>\n <div className={clsx('flex flex-col w-full')}>\n {children}\n </div>\n </>\n\n )\n\n}\n","import clsx from 'clsx'\n\nexport default function QuestaoLayoutAlternativas({ children }: { children?: React.ReactNode }) {\n\n return(\n\n <>\n <div className={clsx('flex flex-col gap-3 w-full')}>\n {children}\n </div>\n </>\n\n )\n\n}\n","import QuestaoTag from './components/common/Tag'\nimport QuestaoLayoutGrid from './components/layout/Grid'\nimport QuestaoLayoutTags from './components/layout/Tags'\nimport QuestaoLayoutMainContent from './components/layout/MainContent'\nimport QuestaoLayoutAlternativas from './components/layout/Alternativas'\n\n/**\n * Componente Questao\n * \n * Este componente serve como namespace para todos os sub-componentes relacionados a uma questão.\n */\nconst Questao = {\n Tag: QuestaoTag,\n Layout: {\n Grid: QuestaoLayoutGrid,\n MainContent: QuestaoLayoutMainContent,\n Tags: QuestaoLayoutTags,\n Alternativas: QuestaoLayoutAlternativas,\n }\n}\n\nexport default Questao","import { useEffect } from 'react'\n\nexport default function useOutsideClick(\n ref: React.RefObject<HTMLElement | null>,\n callback: (open: boolean) => void,\n excludeIds: string[] = []\n) {\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (!!ref && !!ref.current && !ref.current.contains(event.target as Node)) {\n const target = event.target as HTMLElement\n const isExcluded = excludeIds.some(\n (id) => target.id === id || target.closest(`#${id}`)\n )\n\n if (!isExcluded) callback(false)\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [ref, callback])\n}\n","export default function formatPosition(position: string) {\n\tif(/[a-zA-Z]/.test(position)) {\n\t\treturn position.toUpperCase()\n\t}\n\n\tconst numeric = Number(position)\n\tif (Number.isNaN(numeric) || numeric <= 0) {\n\t\treturn position\n\t}\n\n\tconst charCode = 64 + numeric\n\tif (charCode < 65 || charCode > 90) {\n\t\treturn position\n\t}\n\n\treturn String.fromCharCode(charCode)\n}","export default function checkEnunciadoUnderline(enunciado: string){\n const regex = /_+/\n const checkEspaco = regex.test(enunciado)\n\n if(!checkEspaco) return null\n\n const [enunciado1, enunciado2] = enunciado.split(regex)\n\n return { enunciado1, enunciado2 }\n}"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.esm.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/common/Icon/Icon.tsx","../src/modules/questao/components/common/Tag/Tag.tsx","../src/hooks/useAppBreakpoint/index.ts","../src/store/webDsStore/index.ts","../src/modules/questao/components/layout/Grid/index.tsx","../src/modules/questao/components/layout/Tags/index.tsx","../src/utils/formatPosition/index.ts","../src/modules/questao/components/common/Alternativa/Alternativa.tsx","../src/modules/questao/components/layout/MainContent/index.tsx","../src/modules/questao/components/layout/Alternativas/index.tsx","../src/modules/questao/index.ts","../src/hooks/useOutsideClick/index.ts","../src/utils/checkEnunciadoUnderline/index.ts"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import clsx from 'clsx'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport type { IconProps } from './Icon.types'\n\nexport default function Icon({\n fontSize = 14,\n duotone = false,\n duotoneColor,\n primaryOpacity = 1,\n secondaryOpacity = 0.4,\n ...props\n}: IconProps) {\n\n const styles = {\n ...props.style,\n ...(duotone && {\n ['--fa-primary-color' as any]: !!duotoneColor ? duotoneColor[0] : undefined,\n ['--fa-secondary-color' as any]: !!duotoneColor && duotoneColor[1] ? duotoneColor[1] : undefined,\n ['--fa-primary-opacity' as any]: primaryOpacity,\n ['--fa-secondary-opacity' as any]: secondaryOpacity\n })\n }\n\n return (\n <FontAwesomeIcon\n {...props}\n fontSize={fontSize}\n style={styles}\n className={clsx(\n props.className,\n 'tw:transition-colors'\n )}\n />\n )\n}\n","import clsx from 'clsx'\nimport Icon from '@/components/common/Icon'\nimport type { QuestaoTagProps } from './Tag.types'\n\nexport default function QuestaoTag({ icon, label, status }: QuestaoTagProps) {\n\n return(\n\n <>\n <div className={clsx('tw:flex tw:items-center tw:gap-1 tw:h-7 tw:px-2')}>\n <Icon\n icon={icon}\n fontSize={12}\n className={clsx(\n status === 'certo' && 'tw:text-certo',\n status === 'errado' && 'tw:text-errado',\n status === 'parcial' && 'tw:text-parcial',\n !status && 'tw:text-primario-20'\n )}\n />\n\n {!!label && (\n <p\n className={clsx(\n 'tw:transition-colors',\n 'tw:text-xs tw:leading-full',\n status === 'certo' && 'tw:text-certo',\n status === 'errado' && 'tw:text-errado',\n status === 'parcial' && 'tw:text-parcial',\n !status && 'tw:text-primario-20'\n )}\n >\n {label}\n </p>\n )}\n </div>\n </>\n\n )\n\n}\n","import { useEffect, useState } from 'react'\nimport { isBrowser } from 'framer-motion'\n\nexport type TBreakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport default function useAppBreakpoint() {\n const [size, setSize] = useState(0)\n const [breakpoint, setBreakpoint] = useState<TBreakpoint>('sm')\n const [breakpoints, setBreakpoints] = useState({\n xl: false,\n lg: false,\n md: false,\n sm: false,\n xs: true\n })\n\n const getBreakpoint = (width: number): TBreakpoint => {\n if (width >= 1280) return 'xl'\n if (width >= 1024) return 'lg'\n if (width >= 768) return 'md'\n if (width >= 640) return 'sm'\n return 'xs'\n }\n\n const updateBreakpoints = (width: number) => {\n setBreakpoints({\n xl: width >= 1280,\n lg: width >= 1024,\n md: width >= 768,\n sm: width >= 640,\n xs: width > 0\n })\n }\n\n useEffect(() => {\n if (!isBrowser) return\n\n const handleResize = () => {\n const width = window.innerWidth\n\n setSize(width)\n setBreakpoint(getBreakpoint(width))\n updateBreakpoints(width)\n }\n\n handleResize()\n\n window.addEventListener('resize', handleResize)\n\n return () => window.removeEventListener('resize', handleResize)\n }, [])\n\n return {\n breakpoint,\n size,\n ...breakpoints\n }\n}\n","import { create } from 'zustand'\nimport { persist } from 'zustand/middleware'\nimport type { TProva } from '@/interfaces/TProva'\n\ninterface WebDsState {\n themeProva: TProva | null\n setThemeProva: (value: TProva | null) => void\n\n darkMode: boolean\n setDarkMode: (value: boolean) => void\n toggleDarkMode: () => void\n\n questionDarkMode: boolean\n setQuestionDarkMode: (value: boolean) => void\n toggleQuestionDarkMode: () => void\n\n questionGridOrientation: 'horizontal' | 'vertical'\n toggleQuestionGridOrientation: () => void\n}\n\nconst useWebDsStore = create<WebDsState>()(\n persist(\n (set) => ({\n themeProva: null,\n setThemeProva: (value) => set({ themeProva: value }),\n\n darkMode: false,\n setDarkMode: (value) => set({\n questionDarkMode: value,\n darkMode: value\n }),\n toggleDarkMode: () => set((state) => {\n const newValue = !state.darkMode\n\n return {\n questionDarkMode: newValue,\n darkMode: newValue\n }\n }),\n\n questionDarkMode: false,\n setQuestionDarkMode: (value) => set({ questionDarkMode: value }),\n toggleQuestionDarkMode: () => set((state) => ({ questionDarkMode: !state.questionDarkMode })),\n\n questionGridOrientation: 'horizontal',\n toggleQuestionGridOrientation: () => set((state) => ({\n questionGridOrientation: state.questionGridOrientation === 'horizontal' ? 'vertical' : 'horizontal'\n }))\n }),\n {\n name: 'hwm-web-ds',\n }\n )\n)\n\nexport default useWebDsStore","import clsx from 'clsx'\nimport useAppBreakpoint from '@/hooks/useAppBreakpoint'\nimport useWebDsStore from '@/store/webDsStore'\n\nexport default function QuestaoLayoutGrid({ children }: { children?: React.ReactNode }) {\n\n const { questionGridOrientation } = useWebDsStore()\n\n const { lg } = useAppBreakpoint()\n\n return(\n\n <>\n <div\n className={clsx(\n 'flex gap-10 w-full max-w-7xl mx-auto',\n (lg && questionGridOrientation === 'horizontal') ? 'flex-row' : 'flex-col'\n )}\n >\n {children}\n </div>\n </>\n\n )\n\n}\n","import clsx from 'clsx'\n\nexport default function QuestaoLayoutTags({ children }: { children?: React.ReactNode }) {\n\n return(\n\n <>\n <div className={clsx('flex flex-row gap-4 w-full')}>\n {children}\n </div>\n </>\n\n )\n\n}\n","export default function formatPosition(position: string) {\n\tif(/[a-zA-Z]/.test(position)) {\n\t\treturn position.toUpperCase()\n\t}\n\n\tconst numeric = Number(position)\n\tif (Number.isNaN(numeric) || numeric <= 0) {\n\t\treturn position\n\t}\n\n\tconst charCode = 64 + numeric\n\tif (charCode < 65 || charCode > 90) {\n\t\treturn position\n\t}\n\n\treturn String.fromCharCode(charCode)\n}","import clsx from 'clsx'\nimport { byPrefixAndName } from '@awesome.me/kit-a7702856b7/icons'\nimport Icon from '@/components/common/Icon'\nimport useWebDsStore from '@/store/webDsStore'\nimport formatPosition from '@/utils/formatPosition'\nimport type { QuestaoAlternativaProps } from './Alternativa.types'\n\nexport default function QuestaoAlternativa({\n position,\n text,\n selected,\n correct,\n answered,\n showAnswer = false,\n cancelled = false,\n percentage,\n onClick\n}: QuestaoAlternativaProps) {\n\n const { questionDarkMode } = useWebDsStore()\n\n const CHECK_DISABLED = answered || cancelled\n const CHECK_NOT_ANSWERED = (!showAnswer && answered) || !answered\n const CHECK_ANSWERED = showAnswer && answered\n \n const SHOW_ANSWER_ICON = CHECK_ANSWERED && (correct || (!correct && selected))\n \n return(\n\n <>\n <button\n className={clsx(\n 'tw:relative',\n 'tw:flex tw:items-center tw:gap-4 tw:w-full tw:min-h-14 tw:px-4 tw:py-3 tw:rounded-lg tw:transition-colors',\n 'tw:text-sm tw:whitespace-pre-wrap',\n 'tw:transition-colors',\n !CHECK_DISABLED && 'tw:default-click-animation',\n CHECK_NOT_ANSWERED && {\n 'tw:bg-cinza-1000 tw:hover:tw:bg-cinza-900 tw:text-cinza-100': !selected && questionDarkMode,\n 'tw:bg-cinza-500 tw:text-cinza-1000': selected && questionDarkMode,\n 'tw:bg-secundario-85 tw:hover:tw:bg-secundario-95 tw:text-primario-20': !selected && !questionDarkMode,\n 'tw:bg-primario-20 tw:text-primario-80': selected && !questionDarkMode\n },\n CHECK_ANSWERED && {\n 'tw:border tw:border-certo tw:text-certo': correct,\n 'tw:border tw:border-errado tw:text-errado': !correct && selected,\n 'tw:opacity-50': !correct && !selected,\n\n 'tw:bg-cinza-1100': ((!correct && selected) || correct) && questionDarkMode,\n 'tw:bg-cinza-1000 tw:text-cinza-900': (!correct && !selected) && questionDarkMode,\n 'tw:bg-secundario-95': ((!correct && selected) || correct) && !questionDarkMode,\n 'tw:bg-secundario-85 tw:text-cinza-1000': (!correct && !selected) && !questionDarkMode\n }\n )}\n disabled={CHECK_DISABLED}\n onClick={onClick}\n >\n {!!position && (\n <p\n className={clsx(\n 'tw:transition-colors',\n 'tw:font-bold tw:text-2xl tw:leading-full'\n )}\n >\n {formatPosition(position)}\n </p>\n )}\n\n <p\n className={clsx(\n 'tw:w-full tw:transition-colors',\n 'tw:text-left tw:whitespace-pre-wrap',\n cancelled && 'tw:line-through tw:decoration-2',\n CHECK_ANSWERED && {\n 'tw:font-bold': (!correct && selected) || correct\n }\n )}\n >\n {text}\n </p>\n\n {(CHECK_ANSWERED && percentage !== undefined) && (\n <p\n className={clsx(\n 'tw:transition-colors',\n 'tw:font-bold tw:text-sm tw:leading-full'\n )}\n >\n {`${percentage}`.padStart(2, '0')}%\n </p>\n )}\n\n {SHOW_ANSWER_ICON && (\n <div\n className={clsx(\n 'tw:absolute tw:-top-1.5 tw:-right-1.5',\n 'tw:flex tw:items-center tw:justify-center tw:size-5 tw:rounded-full tw:bg-secundario-95 tw:transition-colors',\n )}\n >\n <Icon\n icon={byPrefixAndName.fas[correct ? 'circle-check' : 'circle-xmark']}\n fontSize={20}\n className={clsx(correct ? 'tw:text-certo' : 'tw:text-errado')}\n />\n </div>\n )}\n </button>\n </>\n\n )\n\n}\n","import clsx from 'clsx'\n\nexport default function QuestaoLayoutMainContent({ children }: { children?: React.ReactNode }) {\n\n return(\n\n <>\n <div className={clsx('flex flex-col w-full')}>\n {children}\n </div>\n </>\n\n )\n\n}\n","import clsx from 'clsx'\n\nexport default function QuestaoLayoutAlternativas({ children }: { children?: React.ReactNode }) {\n\n return(\n\n <>\n <div className={clsx('flex flex-col gap-3 w-full')}>\n {children}\n </div>\n </>\n\n )\n\n}\n","import QuestaoTag from './components/common/Tag'\nimport QuestaoLayoutGrid from './components/layout/Grid'\nimport QuestaoLayoutTags from './components/layout/Tags'\nimport QuestaoAlternativa from './components/common/Alternativa/Alternativa'\nimport QuestaoLayoutMainContent from './components/layout/MainContent'\nimport QuestaoLayoutAlternativas from './components/layout/Alternativas'\n\n/**\n * Componente Questao\n * \n * Este componente serve como namespace para todos os sub-componentes relacionados a uma questão.\n */\nconst Questao = {\n Tag: QuestaoTag,\n Alternativa: QuestaoAlternativa,\n Layout: {\n Grid: QuestaoLayoutGrid,\n MainContent: QuestaoLayoutMainContent,\n Tags: QuestaoLayoutTags,\n Alternativas: QuestaoLayoutAlternativas,\n }\n}\n\nexport default Questao","import { useEffect } from 'react'\n\nexport default function useOutsideClick(\n ref: React.RefObject<HTMLElement | null>,\n callback: (open: boolean) => void,\n excludeIds: string[] = []\n) {\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (!!ref && !!ref.current && !ref.current.contains(event.target as Node)) {\n const target = event.target as HTMLElement\n const isExcluded = excludeIds.some(\n (id) => target.id === id || target.closest(`#${id}`)\n )\n\n if (!isExcluded) callback(false)\n }\n }\n\n document.addEventListener('mousedown', handleClickOutside)\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [ref, callback])\n}\n","export default function checkEnunciadoUnderline(enunciado: string){\n const regex = /_+/\n const checkEspaco = regex.test(enunciado)\n\n if(!checkEspaco) return null\n\n const [enunciado1, enunciado2] = enunciado.split(regex)\n\n return { enunciado1, enunciado2 }\n}"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,6 +1,7 @@
1
1
  import QuestaoTag from './components/common/Tag';
2
2
  import QuestaoLayoutGrid from './components/layout/Grid';
3
3
  import QuestaoLayoutTags from './components/layout/Tags';
4
+ import QuestaoAlternativa from './components/common/Alternativa/Alternativa';
4
5
  import QuestaoLayoutMainContent from './components/layout/MainContent';
5
6
  import QuestaoLayoutAlternativas from './components/layout/Alternativas';
6
7
  /**
@@ -10,6 +11,7 @@ import QuestaoLayoutAlternativas from './components/layout/Alternativas';
10
11
  */
11
12
  declare const Questao: {
12
13
  Tag: typeof QuestaoTag;
14
+ Alternativa: typeof QuestaoAlternativa;
13
15
  Layout: {
14
16
  Grid: typeof QuestaoLayoutGrid;
15
17
  MainContent: typeof QuestaoLayoutMainContent;
@@ -8,8 +8,8 @@ interface WebDsState {
8
8
  questionDarkMode: boolean;
9
9
  setQuestionDarkMode: (value: boolean) => void;
10
10
  toggleQuestionDarkMode: () => void;
11
- questionRowGridView: boolean;
12
- toggleQuestionRowGridView: () => void;
11
+ questionGridOrientation: 'horizontal' | 'vertical';
12
+ toggleQuestionGridOrientation: () => void;
13
13
  }
14
14
  declare const useWebDsStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<WebDsState>, "setState" | "persist"> & {
15
15
  setState(partial: WebDsState | Partial<WebDsState> | ((state: WebDsState) => WebDsState | Partial<WebDsState>), replace?: false | undefined): unknown;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hardwork-med/hwm-web-ds",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Design System do Hardwork Medicina, para aplicações Web",
5
5
  "homepage": "https://github.com/HardworkMedicina/hwm-web-ds#readme",
6
6
  "bugs": {