@goliapkg/gds 2.1.1 → 2.2.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/a11y-CoNNB_xa.js +6 -0
- package/dist/a11y-CoNNB_xa.js.map +1 -0
- package/dist/{avatar-Ct8OOGx6.js → avatar-oCar1zX6.js} +2 -2
- package/dist/{avatar-Ct8OOGx6.js.map → avatar-oCar1zX6.js.map} +1 -1
- package/dist/{badge-BCvi5RVF.js → badge-B3ijD3ch.js} +2 -2
- package/dist/{badge-BCvi5RVF.js.map → badge-B3ijD3ch.js.map} +1 -1
- package/dist/{button-BD3VHhwq.js → button-fRpdsI_4.js} +15 -41
- package/dist/button-fRpdsI_4.js.map +1 -0
- package/dist/dist-qdXk1a7h.js +35 -0
- package/dist/dist-qdXk1a7h.js.map +1 -0
- package/dist/{dom-17XgfxMq.js → dom-DkPgnDHP.js} +1 -1
- package/dist/{dom-17XgfxMq.js.map → dom-DkPgnDHP.js.map} +1 -1
- package/dist/editor/index.d.ts +11 -0
- package/dist/editor/index.d.ts.map +1 -0
- package/dist/editor/index.js +1250 -0
- package/dist/editor/index.js.map +1 -0
- package/dist/email-composer-field-UoKh5XMX.js +178 -0
- package/dist/email-composer-field-UoKh5XMX.js.map +1 -0
- package/dist/{gesture-I79dlTuS.js → gesture-CVcSA-iZ.js} +1 -1
- package/dist/{gesture-I79dlTuS.js.map → gesture-CVcSA-iZ.js.map} +1 -1
- package/dist/{highlight-BAGZc-4h.js → highlight-pgwGrmcq.js} +1 -1
- package/dist/{highlight-BAGZc-4h.js.map → highlight-pgwGrmcq.js.map} +1 -1
- package/dist/{hooks-BE-_EmDI.js → hooks-CejfTXVD.js} +1 -1
- package/dist/{hooks-BE-_EmDI.js.map → hooks-CejfTXVD.js.map} +1 -1
- package/dist/{icon-button-Bns79124.js → icon-button-CR2GECEZ.js} +3 -3
- package/dist/{icon-button-Bns79124.js.map → icon-button-CR2GECEZ.js.map} +1 -1
- package/dist/index.js +30 -27
- package/dist/l2-primitives/index.js +11 -11
- package/dist/{l2-primitives-Cn0KNxbB.js → l2-primitives-D503ozjH.js} +4 -4
- package/dist/{l2-primitives-Cn0KNxbB.js.map → l2-primitives-D503ozjH.js.map} +1 -1
- package/dist/l3-atoms/index.js +6 -5
- package/dist/{l3-atoms-BCJNqPHk.js → l3-atoms-CumlHlnP.js} +54 -53
- package/dist/{l3-atoms-BCJNqPHk.js.map → l3-atoms-CumlHlnP.js.map} +1 -1
- package/dist/l4-molecules/index.js +5 -4
- package/dist/{l4-molecules-DtNnQaFU.js → l4-molecules-CWwgFWmO.js} +125 -124
- package/dist/{l4-molecules-DtNnQaFU.js.map → l4-molecules-CWwgFWmO.js.map} +1 -1
- package/dist/l5-organisms/index.d.ts +0 -10
- package/dist/l5-organisms/index.d.ts.map +1 -1
- package/dist/l5-organisms/index.js +2 -2
- package/dist/{l5-organisms-Bu2Z8LSj.js → l5-organisms-QcvIAoHr.js} +1310 -2548
- package/dist/l5-organisms-QcvIAoHr.js.map +1 -0
- package/dist/l6-charts/index.js +1 -1
- package/dist/{l6-charts-DEA5DgMy.js → l6-charts-DKNVGuo0.js} +145 -17
- package/dist/l6-charts-DKNVGuo0.js.map +1 -0
- package/dist/l7-patterns/index.js +1 -1
- package/dist/{l7-patterns-CwonNW9o.js → l7-patterns-CM3FUxjA.js} +34 -34
- package/dist/{l7-patterns-CwonNW9o.js.map → l7-patterns-CM3FUxjA.js.map} +1 -1
- package/dist/loading-dots-CjzCz938.js +24 -0
- package/dist/loading-dots-CjzCz938.js.map +1 -0
- package/dist/motion-CKB1OKVd.js +22 -0
- package/dist/motion-CKB1OKVd.js.map +1 -0
- package/dist/{portal-Bbl6F_Wj.js → portal-B7bfstxv.js} +1 -1
- package/dist/{portal-Bbl6F_Wj.js.map → portal-B7bfstxv.js.map} +1 -1
- package/dist/{progress-dZIQEiTw.js → progress-B81FKPw5.js} +2 -2
- package/dist/{progress-dZIQEiTw.js.map → progress-B81FKPw5.js.map} +1 -1
- package/dist/{resize-handle-BjSNhgJK.js → resize-handle-BFffbhyG.js} +2 -2
- package/dist/{resize-handle-BjSNhgJK.js.map → resize-handle-BFffbhyG.js.map} +1 -1
- package/dist/{sanitize-BF45M9xp.js → sanitize-CO5dRqZX.js} +1 -1
- package/dist/{sanitize-BF45M9xp.js.map → sanitize-CO5dRqZX.js.map} +1 -1
- package/dist/{separator-CRll1Ycp.js → separator-wAUWmxji.js} +2 -2
- package/dist/{separator-CRll1Ycp.js.map → separator-wAUWmxji.js.map} +1 -1
- package/dist/{skeleton-C9FFZSYN.js → skeleton-DhqLfA7r.js} +1 -1
- package/dist/{skeleton-C9FFZSYN.js.map → skeleton-DhqLfA7r.js.map} +1 -1
- package/dist/{spinner-C15eER04.js → spinner-BimzKtfC.js} +3 -3
- package/dist/{spinner-C15eER04.js.map → spinner-BimzKtfC.js.map} +1 -1
- package/dist/{stepper-DJ8pn-9D.js → stepper-BINbai2f.js} +4 -4
- package/dist/{stepper-DJ8pn-9D.js.map → stepper-BINbai2f.js.map} +1 -1
- package/dist/{switch-BAS-GXJV.js → switch-COzaggYE.js} +3 -3
- package/dist/{switch-BAS-GXJV.js.map → switch-COzaggYE.js.map} +1 -1
- package/dist/{textarea-Btdu41rY.js → textarea-DD1huKel.js} +3 -3
- package/dist/{textarea-Btdu41rY.js.map → textarea-DD1huKel.js.map} +1 -1
- package/dist/toast-BujeTn1T.js +442 -0
- package/dist/toast-BujeTn1T.js.map +1 -0
- package/dist/{loading-dots-C1LPHGa0.js → tooltip-BlvhLCp0.js} +2 -17
- package/dist/tooltip-BlvhLCp0.js.map +1 -0
- package/dist/utils/index.js +8 -7
- package/package.json +5 -1
- package/dist/button-BD3VHhwq.js.map +0 -1
- package/dist/l5-organisms-Bu2Z8LSj.js.map +0 -1
- package/dist/l6-charts-DEA5DgMy.js.map +0 -1
- package/dist/loading-dots-C1LPHGa0.js.map +0 -1
- package/dist/motion-DUPegem-.js +0 -22
- package/dist/motion-DUPegem-.js.map +0 -1
- package/dist/toast-QxCZG0Oy.js +0 -614
- package/dist/toast-QxCZG0Oy.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toast-QxCZG0Oy.js","names":[],"sources":["../src/l4-molecules/audit-entry.tsx","../src/l4-molecules/email-composer-field.tsx","../src/l4-molecules/inline-edit.tsx","../src/l4-molecules/list-item.tsx","../src/l4-molecules/notification.tsx","../src/l4-molecules/task-item.tsx","../src/l4-molecules/toast.tsx"],"sourcesContent":["import { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype AuditEntryVariant = 'danger' | 'default' | 'success' | 'warning'\n\ntype AuditEntryProps = React.HTMLAttributes<HTMLDivElement> & {\n action: string\n target?: string\n timestamp: string\n user: string\n variant?: AuditEntryVariant\n}\n\nconst variantCls: Record<AuditEntryVariant, string> = {\n default: 'text-fg',\n success: 'text-success',\n warning: 'text-warning',\n danger: 'text-danger',\n}\n\nexport const AuditEntry = forwardRef<HTMLDivElement, AuditEntryProps>(\n function AuditEntry(\n {\n action,\n className,\n target,\n timestamp,\n user,\n variant = 'default',\n ...props\n },\n ref\n ) {\n return (\n <div\n className={cx(\n 'gds-gap gds-text flex items-center justify-between',\n className\n )}\n data-component=\"audit-entry\"\n ref={ref}\n {...props}\n >\n <span className=\"text-fg-muted shrink-0 text-xs\">{timestamp}</span>\n <span className=\"flex-1 truncate\">\n <span className=\"text-fg font-medium\">{user}</span>{' '}\n <span className={variantCls[variant]}>{action}</span>\n {target !== undefined && (\n <span className=\"text-fg-muted\"> {target}</span>\n )}\n </span>\n </div>\n )\n }\n)\n\nexport type { AuditEntryProps, AuditEntryVariant }\n","// email-composer-field — recipient input with contact chips and autocomplete\n// used by EmailComposer for To/Cc/Bcc fields\n// based on TagInput + Combobox patterns\n\nimport { forwardRef, useCallback, useEffect, useRef, useState } from 'react'\n\nimport { cx } from '../utils/cx'\nimport { glassClass } from '../utils/glass'\n\n// ---- types ----\n\nexport type EmailContact = {\n email: string\n name?: string\n avatar?: string\n}\n\nexport type EmailComposerFieldProps = Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'onChange'\n> & {\n /** current recipient list */\n value: EmailContact[]\n /** update recipient list */\n onChange: (contacts: EmailContact[]) => void\n\n /** async search for contacts */\n onSearch: (query: string) => Promise<EmailContact[]>\n /** static suggestion list */\n suggestions?: EmailContact[]\n\n /** field label: \"To\", \"Cc\", \"Bcc\" */\n label: string\n placeholder?: string\n\n /** frosted glass effect */\n glass?: boolean\n className?: string\n}\n\n// simple email validation (RFC 5322 basic)\nfunction isValidEmail(email: string): boolean {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email)\n}\n\n// generate initials color from email (same algorithm as Avatar)\nfunction emailColor(email: string): string {\n let hash = 0\n for (let i = 0; i < email.length; i++) {\n hash = email.charCodeAt(i) + ((hash << 5) - hash)\n }\n const colors = [\n 'bg-palette-0/20 text-palette-0',\n 'bg-palette-1/20 text-palette-1',\n 'bg-palette-2/20 text-palette-2',\n 'bg-palette-3/20 text-palette-3',\n 'bg-palette-4/20 text-palette-4',\n 'bg-palette-5/20 text-palette-5',\n 'bg-palette-6/20 text-palette-6',\n 'bg-palette-7/20 text-palette-7',\n ]\n return colors[Math.abs(hash) % colors.length]\n}\n\n// ---- chip ----\n\nfunction ContactChip({\n contact,\n onRemove,\n}: {\n contact: EmailContact\n onRemove: () => void\n}) {\n const displayName = contact.name ?? contact.email\n return (\n <span\n className={cx(\n 'gds-text-label inline-flex items-center gap-1 rounded-full px-2 py-0.5 select-none',\n emailColor(contact.email)\n )}\n data-component=\"contact-chip\"\n >\n <span className=\"max-w-[160px] truncate\">{displayName}</span>\n <button\n type=\"button\"\n className=\"shrink-0 rounded-full p-0.5 transition-colors hover:bg-white/10\"\n onClick={onRemove}\n aria-label={`Remove ${displayName}`}\n tabIndex={-1}\n >\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 10 10\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n >\n <path d=\"M2 2l6 6M8 2l-6 6\" />\n </svg>\n </button>\n </span>\n )\n}\n\n// ---- dropdown ----\n\nfunction SuggestionDropdown({\n results,\n activeIndex,\n onSelect,\n}: {\n results: EmailContact[]\n activeIndex: number\n onSelect: (contact: EmailContact) => void\n}) {\n if (results.length === 0) return null\n\n return (\n <div\n className=\"border-border bg-bg-secondary absolute top-full right-0 left-0 z-50 mt-1 max-h-48 overflow-hidden overflow-y-auto rounded-lg border shadow-lg\"\n role=\"listbox\"\n id=\"email-composer-suggestions\"\n >\n {results.map((contact, i) => (\n <button\n key={contact.email}\n type=\"button\"\n className={cx(\n 'gds-text-body flex w-full items-center gap-2 px-3 py-2 text-left transition-colors',\n i === activeIndex\n ? 'bg-accent/10 text-accent'\n : 'text-fg hover:bg-white/[0.04]'\n )}\n onClick={() => onSelect(contact)}\n data-active={i === activeIndex}\n role=\"option\"\n aria-selected={i === activeIndex}\n >\n <span\n className={cx(\n 'gds-text-caption flex h-6 w-6 shrink-0 items-center justify-center rounded-full font-medium',\n emailColor(contact.email)\n )}\n >\n {(contact.name ?? contact.email).charAt(0).toUpperCase()}\n </span>\n <div className=\"min-w-0 flex-1\">\n {contact.name !== undefined && (\n <div className=\"text-fg truncate\">{contact.name}</div>\n )}\n <div className=\"text-fg-muted gds-text-label truncate\">\n {contact.email}\n </div>\n </div>\n </button>\n ))}\n </div>\n )\n}\n\n// ---- main component ----\n\nexport const EmailComposerField = forwardRef<\n HTMLDivElement,\n EmailComposerFieldProps\n>(function EmailComposerField(\n {\n value,\n onChange,\n onSearch,\n suggestions,\n label,\n placeholder,\n glass,\n className,\n ...props\n },\n ref\n) {\n const [query, setQuery] = useState('')\n const [results, setResults] = useState<EmailContact[]>([])\n const [activeIndex, setActiveIndex] = useState(0)\n const [showDropdown, setShowDropdown] = useState(false)\n const inputRef = useRef<HTMLInputElement>(null)\n const debounceRef = useRef<ReturnType<typeof setTimeout>>(undefined)\n const searchSeqRef = useRef(0)\n const blurTimerRef = useRef<ReturnType<typeof setTimeout>>(undefined)\n\n // cleanup blur timer on unmount\n useEffect(() => {\n return () => {\n if (blurTimerRef.current !== undefined) {\n clearTimeout(blurTimerRef.current)\n }\n }\n }, [])\n\n // async search with debounce\n useEffect(() => {\n if (query.length < 1) {\n setResults(suggestions ?? [])\n return\n }\n\n if (debounceRef.current !== undefined) {\n clearTimeout(debounceRef.current)\n }\n\n const seq = ++searchSeqRef.current\n\n debounceRef.current = setTimeout(async () => {\n const searchResults = await onSearch(query)\n // discard stale responses from out-of-order async completions\n if (seq !== searchSeqRef.current) return\n // filter out already-selected contacts\n const filtered = searchResults.filter(\n (r) => !value.some((v) => v.email === r.email)\n )\n setResults(filtered)\n setActiveIndex(0)\n }, 200)\n\n return () => {\n if (debounceRef.current !== undefined) {\n clearTimeout(debounceRef.current)\n }\n }\n }, [query, onSearch, suggestions, value])\n\n const addContact = useCallback(\n (contact: EmailContact) => {\n if (value.some((v) => v.email === contact.email)) return\n onChange([...value, contact])\n setQuery('')\n setResults([])\n setShowDropdown(false)\n inputRef.current?.focus()\n },\n [value, onChange]\n )\n\n const addEmailFromText = useCallback(\n (text: string) => {\n const trimmed = text.trim()\n if (trimmed === '') return\n // handle paste with commas\n const emails = trimmed\n .split(/[,;\\n]+/)\n .map((e) => e.trim())\n .filter((e) => e !== '')\n const newContacts: EmailContact[] = []\n for (const email of emails) {\n if (isValidEmail(email) && !value.some((v) => v.email === email)) {\n newContacts.push({ email })\n }\n }\n if (newContacts.length > 0) {\n onChange([...value, ...newContacts])\n setQuery('')\n }\n },\n [value, onChange]\n )\n\n const removeContact = useCallback(\n (index: number) => {\n const next = [...value]\n next.splice(index, 1)\n onChange(next)\n },\n [value, onChange]\n )\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown' && showDropdown) {\n e.preventDefault()\n setActiveIndex((prev) => (prev + 1) % Math.max(results.length, 1))\n } else if (e.key === 'ArrowUp' && showDropdown) {\n e.preventDefault()\n setActiveIndex(\n (prev) => (prev - 1 + results.length) % Math.max(results.length, 1)\n )\n } else if (\n e.key === 'Enter' &&\n showDropdown &&\n results[activeIndex] !== undefined\n ) {\n e.preventDefault()\n addContact(results[activeIndex])\n } else if (e.key === 'Enter' || e.key === 'Tab' || e.key === ',') {\n if (query.trim() !== '') {\n e.preventDefault()\n addEmailFromText(query)\n }\n } else if (e.key === 'Backspace' && query === '' && value.length > 0) {\n removeContact(value.length - 1)\n }\n },\n [\n showDropdown,\n results,\n activeIndex,\n query,\n value,\n addContact,\n addEmailFromText,\n removeContact,\n ]\n )\n\n const handlePaste = useCallback(\n (e: React.ClipboardEvent) => {\n const text = e.clipboardData.getData('text')\n if (text.includes(',') || text.includes(';') || text.includes('\\n')) {\n e.preventDefault()\n addEmailFromText(text)\n }\n },\n [addEmailFromText]\n )\n\n return (\n <div\n {...props}\n ref={ref}\n className={cx('relative', className)}\n data-component=\"email-composer-field\"\n >\n <div\n className={cx(\n 'border-border gds-radius-input bg-bg flex min-h-[36px] flex-wrap items-center gap-1 border px-2 py-1 transition-colors',\n 'focus-within:ring-accent/30 focus-within:ring-2',\n glass === true && glassClass(glass),\n glass === true && 'bg-bg/60 border-white/10'\n )}\n onClick={() => inputRef.current?.focus()}\n >\n <span className=\"gds-text-label text-fg-muted w-6 shrink-0 select-none\">\n {label}\n </span>\n\n {value.map((contact, i) => (\n <ContactChip\n key={contact.email}\n contact={contact}\n onRemove={() => removeContact(i)}\n />\n ))}\n\n <input\n ref={inputRef}\n type=\"text\"\n value={query}\n onChange={(e) => {\n setQuery(e.target.value)\n setShowDropdown(true)\n }}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n onFocus={() => setShowDropdown(true)}\n role=\"combobox\"\n aria-expanded={showDropdown && results.length > 0}\n aria-autocomplete=\"list\"\n aria-controls=\"email-composer-suggestions\"\n aria-label={`${label} recipients`}\n onBlur={() => {\n // delay to allow dropdown click to fire\n if (blurTimerRef.current !== undefined) {\n clearTimeout(blurTimerRef.current)\n }\n blurTimerRef.current = setTimeout(() => {\n blurTimerRef.current = undefined\n setShowDropdown(false)\n if (query.trim() !== '') addEmailFromText(query)\n }, 200)\n }}\n placeholder={\n value.length === 0\n ? (placeholder ?? `${label.toLowerCase()}@example.com`)\n : ''\n }\n className=\"gds-text-body text-fg placeholder:text-fg-muted/30 min-w-[120px] flex-1 bg-transparent outline-none\"\n />\n </div>\n\n {showDropdown && results.length > 0 && (\n <SuggestionDropdown\n results={results}\n activeIndex={activeIndex}\n onSelect={addContact}\n />\n )}\n </div>\n )\n})\n","// inline-edit — editable text with confirm/cancel buttons and validation\nimport { forwardRef, useCallback, useState } from 'react'\n\nimport { focusCls } from '../utils/a11y'\nimport { cx } from '../utils/cx'\n\nexport type InlineEditProps = {\n value: string\n onSave: (value: string) => void\n onCancel?: () => void\n validate?: (value: string) => string | null\n placeholder?: string\n disabled?: boolean\n className?: string\n}\n\nconst checkIcon = (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M2.5 7.5l3 3 6-6.5\" />\n </svg>\n)\n\nconst cancelIcon = (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n >\n <path d=\"M3 3l8 8M11 3l-8 8\" />\n </svg>\n)\n\nconst editIcon = (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M7 2l3 3-7 7H0V9z\" />\n </svg>\n)\n\nexport const InlineEdit = forwardRef<HTMLDivElement, InlineEditProps>(\n function InlineEdit(\n {\n value,\n onSave,\n onCancel,\n validate,\n placeholder = 'Click to edit',\n disabled,\n className,\n },\n ref\n ) {\n const [editing, setEditing] = useState(false)\n const [editValue, setEditValue] = useState(value)\n const [error, setError] = useState<string | null>(null)\n\n const startEditing = useCallback(() => {\n if (disabled === true) return\n setEditValue(value)\n setError(null)\n setEditing(true)\n }, [disabled, value])\n\n const save = useCallback(() => {\n if (validate !== undefined) {\n const err = validate(editValue)\n if (err !== null) {\n setError(err)\n return\n }\n }\n setEditing(false)\n setError(null)\n onSave(editValue)\n }, [editValue, onSave, validate])\n\n const cancel = useCallback(() => {\n setEditing(false)\n setEditValue(value)\n setError(null)\n if (onCancel !== undefined) {\n onCancel()\n }\n }, [onCancel, value])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n save()\n }\n if (e.key === 'Escape') {\n cancel()\n }\n },\n [save, cancel]\n )\n\n if (editing) {\n return (\n <div\n ref={ref}\n className={cx('inline-flex flex-col', className)}\n data-component=\"inline-edit\"\n data-state=\"editing\"\n >\n <div className=\"flex items-center gap-1\">\n <input\n autoFocus\n className={cx(\n 'gds-text-body text-fg border-accent/50 border-b bg-transparent px-0.5 outline-none',\n error !== null && 'border-danger/50',\n focusCls\n )}\n onChange={(e) => {\n setEditValue(e.target.value)\n setError(null)\n }}\n onKeyDown={handleKeyDown}\n type=\"text\"\n value={editValue}\n />\n <button\n type=\"button\"\n onClick={save}\n className={cx(\n 'text-success hover:text-success/80 shrink-0 p-0.5',\n focusCls\n )}\n aria-label=\"Save\"\n >\n {checkIcon}\n </button>\n <button\n type=\"button\"\n onClick={cancel}\n className={cx(\n 'text-fg-muted hover:text-fg shrink-0 p-0.5',\n focusCls\n )}\n aria-label=\"Cancel\"\n >\n {cancelIcon}\n </button>\n </div>\n {error !== null && (\n <span className=\"text-danger mt-0.5 text-[10px]\">{error}</span>\n )}\n </div>\n )\n }\n\n const isEmpty = value === ''\n\n return (\n <div\n ref={ref}\n className={cx(\n 'group inline-flex cursor-pointer items-center gap-1',\n disabled === true && 'pointer-events-none opacity-50',\n className\n )}\n data-component=\"inline-edit\"\n data-state=\"display\"\n onClick={startEditing}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') startEditing()\n }}\n role=\"button\"\n tabIndex={disabled === true ? -1 : 0}\n >\n <span\n className={cx(\n 'gds-text-body',\n isEmpty ? 'text-fg-muted' : 'text-fg',\n focusCls\n )}\n >\n {isEmpty ? placeholder : value}\n </span>\n <span className=\"text-fg-muted/0 group-hover:text-fg-muted/60 transition-colors\">\n {editIcon}\n </span>\n </div>\n )\n }\n)\n","// list-item — structured list row with icon, title, description, and trailing element\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\nexport type ListItemProps = {\n icon?: ReactNode\n title: string\n description?: string\n trailing?: ReactNode\n onClick?: () => void\n active?: boolean\n disabled?: boolean\n className?: string\n}\n\nexport const ListItem = forwardRef<HTMLDivElement, ListItemProps>(\n function ListItem(\n {\n icon,\n title,\n description,\n trailing,\n onClick,\n active,\n disabled,\n className,\n },\n ref\n ) {\n const isClickable = onClick !== undefined && disabled !== true\n\n return (\n <div\n ref={ref}\n role={isClickable ? 'button' : undefined}\n tabIndex={isClickable ? 0 : undefined}\n onClick={isClickable ? onClick : undefined}\n onKeyDown={\n isClickable\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick()\n }\n }\n : undefined\n }\n className={cx(\n 'gds-pad-x gds-pad-y-sm gds-text-body flex items-center gap-3 select-none',\n isClickable && 'hover:bg-bg-tertiary cursor-pointer',\n active === true && 'border-l-accent bg-accent/5 border-l-2',\n disabled === true && 'pointer-events-none opacity-50',\n className\n )}\n data-component=\"list-item\"\n data-state={active === true ? 'active' : undefined}\n >\n {icon !== undefined && (\n <span className=\"text-fg-muted shrink-0\">{icon}</span>\n )}\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-fg font-medium\">{title}</div>\n {description !== undefined && (\n <div className=\"text-fg-muted gds-text-caption mt-0.5\">\n {description}\n </div>\n )}\n </div>\n {trailing !== undefined && <span className=\"shrink-0\">{trailing}</span>}\n </div>\n )\n }\n)\n","// notification — persistent banner with variant, title, description, and action\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { focusCls } from '../utils/a11y'\nimport { cx } from '../utils/cx'\nimport { glassClass } from '../utils/glass'\n\ntype NotificationVariant = 'danger' | 'info' | 'success' | 'warning'\n\nconst borderColorMap: Record<NotificationVariant, string> = {\n info: 'border-l-accent',\n success: 'border-l-success',\n warning: 'border-l-warning',\n danger: 'border-l-danger',\n}\n\nconst bgColorMap: Record<NotificationVariant, string> = {\n info: 'bg-accent/5',\n success: 'bg-success/5',\n warning: 'bg-warning/5',\n danger: 'bg-danger/5',\n}\n\nconst iconColorMap: Record<NotificationVariant, string> = {\n info: 'text-accent',\n success: 'text-success',\n warning: 'text-warning',\n danger: 'text-danger',\n}\n\nconst iconMap: Record<NotificationVariant, ReactNode> = {\n info: (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" />\n <path d=\"M8 5.5h.01M8 7.5v3\" />\n </svg>\n ),\n success: (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" />\n <path d=\"M5.5 8l2 2 3-3.5\" />\n </svg>\n ),\n warning: (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n >\n <path d=\"M7.13 2.5l-5.5 10h11l-5.5-10z\" />\n <path d=\"M7.63 6.5v2.5M7.63 11h.01\" />\n </svg>\n ),\n danger: (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" />\n <path d=\"M5.5 5.5l5 5M10.5 5.5l-5 5\" />\n </svg>\n ),\n}\n\ntype NotificationProps = React.HTMLAttributes<HTMLDivElement> & {\n title: string\n description?: string\n variant?: NotificationVariant\n action?: ReactNode\n onClose?: () => void\n glass?: boolean\n}\n\nconst Notification = forwardRef<HTMLDivElement, NotificationProps>(\n function Notification(\n {\n title,\n description,\n variant = 'info',\n action,\n onClose,\n glass,\n className,\n ...props\n },\n ref\n ) {\n const v = variant ?? 'info'\n\n return (\n <div\n ref={ref}\n className={cx(\n 'gds-gap gds-radius-popover border-border gds-pad-x gds-pad-y flex w-full items-start border border-l-2',\n borderColorMap[v],\n bgColorMap[v],\n glass === true && glassClass(glass),\n className\n )}\n data-component=\"notification\"\n data-variant={v}\n role=\"alert\"\n {...props}\n >\n <span className={cx('mt-px shrink-0', iconColorMap[v])}>\n {iconMap[v]}\n </span>\n <div className=\"min-w-0 flex-1\">\n <p className=\"gds-text-body text-fg font-medium\">{title}</p>\n {description !== undefined && (\n <p className=\"gds-text-label text-fg-muted mt-0.5\">{description}</p>\n )}\n </div>\n {action !== undefined && <div className=\"shrink-0\">{action}</div>}\n {onClose !== undefined && (\n <button\n type=\"button\"\n onClick={onClose}\n className={cx(\n 'gds-radius-button text-fg-muted shrink-0 p-0.5 opacity-60 hover:opacity-100',\n focusCls\n )}\n aria-label=\"Dismiss\"\n >\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n >\n <path d=\"M2 2l8 8M10 2l-8 8\" />\n </svg>\n </button>\n )}\n </div>\n )\n }\n)\n\nexport { Notification }\nexport type { NotificationProps, NotificationVariant }\n","import { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype TaskItemPriority = 'low' | 'medium' | 'high' | 'critical'\n\ntype TaskItemProps = React.HTMLAttributes<HTMLDivElement> & {\n completed?: boolean\n dueDate?: string\n onToggle?: () => void\n priority?: TaskItemPriority\n title: string\n}\n\nconst priorityCls: Record<TaskItemPriority, string> = {\n low: 'bg-success/15 text-success',\n medium: 'bg-warning/15 text-warning',\n high: 'bg-danger/15 text-danger',\n critical: 'bg-danger text-white',\n}\n\nconst TaskItem = forwardRef<HTMLDivElement, TaskItemProps>(function TaskItem(\n {\n className,\n completed = false,\n dueDate,\n onToggle,\n priority,\n title,\n ...props\n },\n ref\n) {\n return (\n <div\n className={cx(\n 'flex items-center gap-2 rounded px-2 py-1.5 text-sm',\n className\n )}\n data-component=\"task-item\"\n data-completed={completed}\n ref={ref}\n {...props}\n >\n <input\n checked={completed}\n className=\"accent-accent shrink-0\"\n onChange={onToggle}\n type=\"checkbox\"\n />\n <span\n className={cx(\n 'flex-1 truncate',\n completed && 'text-fg-muted line-through'\n )}\n >\n {title}\n </span>\n {priority !== undefined && (\n <span\n className={cx(\n 'rounded px-1.5 py-0.5 text-[10px] font-medium uppercase',\n priorityCls[priority]\n )}\n >\n {priority}\n </span>\n )}\n {dueDate !== undefined && (\n <span className=\"text-fg-muted shrink-0 text-xs\">{dueDate}</span>\n )}\n </div>\n )\n})\n\nexport { TaskItem }\nexport type { TaskItemPriority, TaskItemProps }\n","// toast — notification card with variant, title, description, and action\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { focusCls } from '../utils/a11y'\nimport { cx } from '../utils/cx'\n\nexport type ToastVariant = 'danger' | 'default' | 'success' | 'warning'\n\nconst borderColorMap: Record<ToastVariant, string> = {\n default: 'border-l-accent',\n success: 'border-l-success',\n warning: 'border-l-warning',\n danger: 'border-l-danger',\n}\n\nconst iconMap: Record<ToastVariant, ReactNode> = {\n default: (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" />\n <path d=\"M8 5.5h.01M8 7.5v3\" />\n </svg>\n ),\n success: (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" />\n <path d=\"M5.5 8l2 2 3-3.5\" />\n </svg>\n ),\n warning: (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n >\n <path d=\"M7.13 2.5l-5.5 10h11l-5.5-10z\" />\n <path d=\"M7.63 6.5v2.5M7.63 11h.01\" />\n </svg>\n ),\n danger: (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" />\n <path d=\"M5.5 5.5l5 5M10.5 5.5l-5 5\" />\n </svg>\n ),\n}\n\nconst iconColorMap: Record<ToastVariant, string> = {\n default: 'text-accent',\n success: 'text-success',\n warning: 'text-warning',\n danger: 'text-danger',\n}\n\nexport type ToastProps = React.HTMLAttributes<HTMLDivElement> & {\n title: string\n description?: string\n variant?: ToastVariant\n onClose?: () => void\n action?: ReactNode\n}\n\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(function Toast(\n {\n title,\n description,\n variant = 'default',\n onClose,\n action,\n className,\n ...props\n },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cx(\n 'gds-gap gds-radius-popover border-border bg-surface gds-pad-x gds-pad-y gds-shadow-lg flex items-start border border-l-4',\n borderColorMap[variant],\n className\n )}\n data-component=\"toast\"\n data-variant={variant}\n role=\"status\"\n {...props}\n >\n <span className={cx('mt-px shrink-0', iconColorMap[variant])}>\n {iconMap[variant]}\n </span>\n <div className=\"min-w-0 flex-1\">\n <p className=\"gds-text-body text-fg font-medium\">{title}</p>\n {description !== undefined && (\n <p className=\"gds-text-label text-fg-muted mt-0.5\">{description}</p>\n )}\n </div>\n {action !== undefined && <div className=\"shrink-0\">{action}</div>}\n {onClose !== undefined && (\n <button\n type=\"button\"\n onClick={onClose}\n className={cx(\n 'gds-radius-button text-fg-muted shrink-0 p-0.5 opacity-60 hover:opacity-100',\n focusCls\n )}\n aria-label=\"Dismiss\"\n >\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n >\n <path d=\"M2 2l8 8M10 2l-8 8\" />\n </svg>\n </button>\n )}\n </div>\n )\n})\n"],"mappings":"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"}
|